From 89bd0cf5349bed75a845c183250ebf9a1594b449 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Mon, 2 Feb 2026 14:57:01 +0100 Subject: [PATCH 01/11] Port to 24w34a (#70) --- gradle.properties | 8 +- .../client/item/bar/ItemBarStyle.java | 5 +- .../mixin/client/gui/DrawContextExtender.java | 42 +- .../CreativeInventoryScreenExtender.java | 4 +- ...stractFurnaceRecipeBookScreenExtender.java | 20 +- .../RecipeAlternativesWidgetAccessor.java | 59 -- .../RecipeBookGhostSlotsExtender.java | 30 - .../recipebook/RecipeBookWidgetExtender.java | 3 +- .../BundleTooltipComponentExtender.java | 2 +- .../ClientPlayNetworkHandlerExtender.java | 14 + .../network/ClientTagLoaderExtender.java | 19 - .../entity/PlayerEntityRendererExtender.java | 2 +- .../feature/ArmorFeatureRendererExtender.java | 17 +- .../feature/CapeFeatureRendererExtender.java | 2 +- .../ElytraFeatureRendererExtender.java | 2 +- .../feature/HeadFeatureRendererExtender.java | 6 +- .../HorseArmorFeatureRendererExtender.java | 18 +- ...owGolemPumpkinFeatureRendererExtender.java | 25 - .../WolfArmorFeatureRendererExtender.java | 26 +- .../model/DrownedEntityModelExtender.java | 2 +- .../model/SkeletonEntityModelExtender.java | 5 +- .../WitchHeldItemFeatureRendererExtender.java | 2 +- .../render/item/ItemRendererExtender.java | 36 +- .../render/model/ModelLoaderExtender.java | 77 -- .../client/toast/RecipeToastExtender.java | 5 +- .../tutorial/BundleTutorialExtender.java | 23 - .../WorldEventHandlerExtender.java} | 14 +- .../resources/itematic.client.mixins.json | 12 +- .../itematic/data/ItematicData.java | 1 - .../itematic/data/server/RecipeProvider.java | 192 ++++- .../server/tag/EntityTypeTagProvider.java | 25 - .../data/server/tag/ItemTagProvider.java | 22 +- .../itematic/gametest/TestUtil.java | 3 +- .../block/BrewingStandBlockTestSuite.java | 160 ++++ .../gametest/item/FishingRodTestSuite.java | 2 +- .../gametest/item/HoneyBottleTestSuite.java | 12 +- .../EquipmentItemComponentTestSuite.java | 10 +- .../MappableItemComponentTestSuite.java | 9 +- .../ThrowableItemComponentTestSuite.java | 30 +- .../UseableOnFluidItemComponentTestSuite.java | 18 +- .../WeaponItemComponentTestSuite.java | 16 +- .../mixin/gametest/TestServerExtender.java | 36 - .../structure/block.brewing_stand.snbt | 39 + src/gametest/resources/fabric.mod.json | 1 + .../resources/itematic-gametest.mixins.json | 3 +- .../minecraft/item_bar_style/bundle.json | 2 +- .../data/minecraft/item/allay_spawn_egg.json | 9 +- .../minecraft/item/angler_pottery_sherd.json | 1 + .../minecraft/item/archer_pottery_sherd.json | 1 + .../minecraft/item/armadillo_spawn_egg.json | 9 +- .../minecraft/item/arms_up_pottery_sherd.json | 1 + .../minecraft/item/axolotl_spawn_egg.json | 9 +- .../data/minecraft/item/bat_spawn_egg.json | 9 +- .../data/minecraft/item/bee_spawn_egg.json | 9 +- .../data/minecraft/item/beetroot_soup.json | 8 +- .../minecraft/item/blade_pottery_sherd.json | 1 + .../data/minecraft/item/blaze_spawn_egg.json | 9 +- .../data/minecraft/item/bogged_spawn_egg.json | 9 +- .../bolt_armor_trim_smithing_template.json | 1 + .../item/bordure_indented_banner_pattern.json | 12 + .../data/minecraft/item/breeze_spawn_egg.json | 9 +- .../minecraft/item/brewer_pottery_sherd.json | 1 + .../minecraft/item/burn_pottery_sherd.json | 1 + .../data/minecraft/item/camel_spawn_egg.json | 9 +- .../data/minecraft/item/cat_spawn_egg.json | 9 +- .../minecraft/item/cave_spider_spawn_egg.json | 9 +- .../data/minecraft/item/chainmail_boots.json | 3 +- .../minecraft/item/chainmail_chestplate.json | 3 +- .../data/minecraft/item/chainmail_helmet.json | 3 +- .../minecraft/item/chainmail_leggings.json | 3 +- .../data/minecraft/item/chicken.json | 35 +- .../minecraft/item/chicken_spawn_egg.json | 9 +- .../coast_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/cod_spawn_egg.json | 9 +- .../data/minecraft/item/cow_spawn_egg.json | 9 +- .../item/creeper_banner_pattern.json | 6 - .../minecraft/item/creeper_spawn_egg.json | 9 +- .../minecraft/item/danger_pottery_sherd.json | 1 + .../data/minecraft/item/diamond_axe.json | 2 +- .../data/minecraft/item/diamond_boots.json | 2 +- .../minecraft/item/diamond_chestplate.json | 2 +- .../data/minecraft/item/diamond_helmet.json | 2 +- .../data/minecraft/item/diamond_hoe.json | 2 +- .../data/minecraft/item/diamond_leggings.json | 2 +- .../data/minecraft/item/diamond_pickaxe.json | 2 +- .../data/minecraft/item/diamond_shovel.json | 2 +- .../data/minecraft/item/diamond_sword.json | 2 +- .../data/minecraft/item/disc_fragment_5.json | 1 + .../minecraft/item/dolphin_spawn_egg.json | 9 +- .../data/minecraft/item/donkey_spawn_egg.json | 9 +- .../data/minecraft/item/dragon_breath.json | 3 - .../data/minecraft/item/dragon_head.json | 2 +- .../minecraft/item/drowned_spawn_egg.json | 9 +- .../dune_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/echo_shard.json | 1 + .../item/elder_guardian_spawn_egg.json | 9 +- .../generated/data/minecraft/item/elytra.json | 4 +- .../item/enchanted_golden_apple.json | 55 +- .../data/minecraft/item/end_crystal.json | 1 - .../item/ender_dragon_spawn_egg.json | 9 +- .../minecraft/item/enderman_spawn_egg.json | 9 +- .../minecraft/item/endermite_spawn_egg.json | 9 +- .../data/minecraft/item/evoker_spawn_egg.json | 9 +- .../item/explorer_pottery_sherd.json | 1 + .../eye_armor_trim_smithing_template.json | 1 + .../item/field_masoned_banner_pattern.json | 12 + .../flow_armor_trim_smithing_template.json | 1 + .../minecraft/item/flow_banner_pattern.json | 6 - .../minecraft/item/flow_pottery_sherd.json | 1 + .../minecraft/item/flower_banner_pattern.json | 6 - .../data/minecraft/item/fox_spawn_egg.json | 9 +- .../minecraft/item/friend_pottery_sherd.json | 1 + .../data/minecraft/item/frog_spawn_egg.json | 9 +- .../data/minecraft/item/ghast_spawn_egg.json | 9 +- .../minecraft/item/globe_banner_pattern.json | 6 - .../minecraft/item/glow_squid_spawn_egg.json | 9 +- .../data/minecraft/item/goat_horn.json | 1 + .../data/minecraft/item/goat_spawn_egg.json | 9 +- .../data/minecraft/item/golden_apple.json | 39 +- .../data/minecraft/item/golden_axe.json | 10 +- .../data/minecraft/item/golden_boots.json | 2 +- .../minecraft/item/golden_chestplate.json | 2 +- .../data/minecraft/item/golden_helmet.json | 2 +- .../data/minecraft/item/golden_hoe.json | 10 +- .../data/minecraft/item/golden_leggings.json | 2 +- .../data/minecraft/item/golden_pickaxe.json | 10 +- .../data/minecraft/item/golden_shovel.json | 10 +- .../data/minecraft/item/golden_sword.json | 10 +- .../minecraft/item/guardian_spawn_egg.json | 9 +- .../minecraft/item/guster_banner_pattern.json | 6 - .../minecraft/item/guster_pottery_sherd.json | 1 + .../minecraft/item/heart_pottery_sherd.json | 1 + .../item/heartbreak_pottery_sherd.json | 1 + .../data/minecraft/item/hoglin_spawn_egg.json | 9 +- .../data/minecraft/item/honey_bottle.json | 8 +- .../data/minecraft/item/horse_spawn_egg.json | 9 +- .../host_armor_trim_smithing_template.json | 1 + .../minecraft/item/howl_pottery_sherd.json | 1 + .../data/minecraft/item/husk_spawn_egg.json | 9 +- .../data/minecraft/item/iron_axe.json | 2 +- .../data/minecraft/item/iron_boots.json | 2 +- .../data/minecraft/item/iron_chestplate.json | 2 +- .../minecraft/item/iron_golem_spawn_egg.json | 9 +- .../data/minecraft/item/iron_helmet.json | 2 +- .../data/minecraft/item/iron_hoe.json | 2 +- .../data/minecraft/item/iron_leggings.json | 2 +- .../data/minecraft/item/iron_pickaxe.json | 2 +- .../data/minecraft/item/iron_shovel.json | 2 +- .../data/minecraft/item/iron_sword.json | 2 +- .../data/minecraft/item/lava_bucket.json | 7 +- .../data/minecraft/item/leather_boots.json | 2 +- .../minecraft/item/leather_chestplate.json | 2 +- .../data/minecraft/item/leather_helmet.json | 2 +- .../data/minecraft/item/leather_leggings.json | 2 +- .../data/minecraft/item/llama_spawn_egg.json | 9 +- .../generated/data/minecraft/item/mace.json | 2 +- .../minecraft/item/magma_cube_spawn_egg.json | 9 +- .../data/minecraft/item/milk_bucket.json | 8 +- .../minecraft/item/miner_pottery_sherd.json | 1 + .../minecraft/item/mojang_banner_pattern.json | 8 +- .../minecraft/item/mooshroom_spawn_egg.json | 9 +- .../minecraft/item/mourner_pottery_sherd.json | 1 + .../data/minecraft/item/mule_spawn_egg.json | 9 +- .../data/minecraft/item/mushroom_stew.json | 8 +- .../data/minecraft/item/music_disc_11.json | 2 +- .../data/minecraft/item/music_disc_13.json | 2 +- .../data/minecraft/item/music_disc_5.json | 2 +- .../minecraft/item/music_disc_blocks.json | 2 +- .../data/minecraft/item/music_disc_cat.json | 2 +- .../data/minecraft/item/music_disc_chirp.json | 2 +- .../minecraft/item/music_disc_creator.json | 2 +- .../item/music_disc_creator_music_box.json | 2 +- .../data/minecraft/item/music_disc_far.json | 2 +- .../data/minecraft/item/music_disc_mall.json | 2 +- .../minecraft/item/music_disc_mellohi.json | 2 +- .../minecraft/item/music_disc_otherside.json | 2 +- .../minecraft/item/music_disc_pigstep.json | 2 +- .../minecraft/item/music_disc_precipice.json | 2 +- .../data/minecraft/item/music_disc_relic.json | 2 +- .../data/minecraft/item/music_disc_stal.json | 2 +- .../data/minecraft/item/music_disc_strad.json | 2 +- .../data/minecraft/item/music_disc_wait.json | 2 +- .../data/minecraft/item/music_disc_ward.json | 2 +- .../data/minecraft/item/nautilus_shell.json | 1 + .../data/minecraft/item/nether_star.json | 2 +- .../data/minecraft/item/netherite_axe.json | 2 +- .../data/minecraft/item/netherite_boots.json | 2 +- .../minecraft/item/netherite_chestplate.json | 2 +- .../data/minecraft/item/netherite_helmet.json | 2 +- .../data/minecraft/item/netherite_hoe.json | 2 +- .../minecraft/item/netherite_leggings.json | 2 +- .../minecraft/item/netherite_pickaxe.json | 2 +- .../data/minecraft/item/netherite_shovel.json | 2 +- .../data/minecraft/item/netherite_sword.json | 2 +- .../netherite_upgrade_smithing_template.json | 1 + .../data/minecraft/item/ocelot_spawn_egg.json | 9 +- .../data/minecraft/item/panda_spawn_egg.json | 9 +- .../data/minecraft/item/parrot_spawn_egg.json | 9 +- .../minecraft/item/phantom_spawn_egg.json | 9 +- .../data/minecraft/item/pig_spawn_egg.json | 9 +- .../minecraft/item/piglin_banner_pattern.json | 6 - .../item/piglin_brute_spawn_egg.json | 9 +- .../data/minecraft/item/piglin_spawn_egg.json | 9 +- .../minecraft/item/pillager_spawn_egg.json | 9 +- .../minecraft/item/plenty_pottery_sherd.json | 1 + .../data/minecraft/item/poisonous_potato.json | 35 +- .../minecraft/item/polar_bear_spawn_egg.json | 9 +- .../generated/data/minecraft/item/potion.json | 5 +- .../minecraft/item/prize_pottery_sherd.json | 1 + .../data/minecraft/item/pufferfish.json | 46 +- .../minecraft/item/pufferfish_spawn_egg.json | 9 +- .../data/minecraft/item/rabbit_spawn_egg.json | 9 +- .../data/minecraft/item/rabbit_stew.json | 8 +- .../raiser_armor_trim_smithing_template.json | 1 + .../minecraft/item/ravager_spawn_egg.json | 9 +- .../data/minecraft/item/recovery_compass.json | 1 + .../rib_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/rotten_flesh.json | 35 +- .../data/minecraft/item/salmon_spawn_egg.json | 9 +- .../minecraft/item/scrape_pottery_sherd.json | 1 + .../sentry_armor_trim_smithing_template.json | 1 + .../shaper_armor_trim_smithing_template.json | 1 + .../minecraft/item/sheaf_pottery_sherd.json | 1 + .../data/minecraft/item/sheep_spawn_egg.json | 9 +- .../minecraft/item/shelter_pottery_sherd.json | 1 + .../generated/data/minecraft/item/shield.json | 7 +- .../minecraft/item/shulker_spawn_egg.json | 9 +- .../silence_armor_trim_smithing_template.json | 1 + .../minecraft/item/silverfish_spawn_egg.json | 9 +- .../item/skeleton_horse_spawn_egg.json | 9 +- .../minecraft/item/skeleton_spawn_egg.json | 9 +- .../minecraft/item/skull_banner_pattern.json | 8 +- .../minecraft/item/skull_pottery_sherd.json | 1 + .../data/minecraft/item/slime_spawn_egg.json | 9 +- .../data/minecraft/item/sniffer_egg.json | 1 + .../minecraft/item/sniffer_spawn_egg.json | 9 +- .../minecraft/item/snort_pottery_sherd.json | 1 + .../snout_armor_trim_smithing_template.json | 1 + .../minecraft/item/snow_golem_spawn_egg.json | 9 +- .../data/minecraft/item/spider_eye.json | 24 +- .../data/minecraft/item/spider_spawn_egg.json | 9 +- .../spire_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/squid_spawn_egg.json | 9 +- .../data/minecraft/item/stone_axe.json | 2 +- .../data/minecraft/item/stone_hoe.json | 2 +- .../data/minecraft/item/stone_pickaxe.json | 2 +- .../data/minecraft/item/stone_shovel.json | 2 +- .../data/minecraft/item/stone_sword.json | 2 +- .../data/minecraft/item/stray_spawn_egg.json | 9 +- .../minecraft/item/strider_spawn_egg.json | 9 +- .../data/minecraft/item/suspicious_stew.json | 26 +- .../minecraft/item/tadpole_spawn_egg.json | 9 +- .../tide_armor_trim_smithing_template.json | 1 + .../item/trader_llama_spawn_egg.json | 9 +- .../data/minecraft/item/trident.json | 2 +- .../item/tropical_fish_spawn_egg.json | 9 +- .../data/minecraft/item/turtle_helmet.json | 2 +- .../data/minecraft/item/turtle_spawn_egg.json | 9 +- .../vex_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/vex_spawn_egg.json | 9 +- .../minecraft/item/villager_spawn_egg.json | 9 +- .../minecraft/item/vindicator_spawn_egg.json | 9 +- .../item/wandering_trader_spawn_egg.json | 9 +- .../ward_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/warden_spawn_egg.json | 9 +- .../data/minecraft/item/water_bucket.json | 3 - ...ayfinder_armor_trim_smithing_template.json | 1 + .../wild_armor_trim_smithing_template.json | 1 + .../data/minecraft/item/witch_spawn_egg.json | 9 +- .../item/wither_skeleton_spawn_egg.json | 9 +- .../data/minecraft/item/wither_spawn_egg.json | 9 +- .../data/minecraft/item/wolf_spawn_egg.json | 9 +- .../data/minecraft/item/wooden_axe.json | 2 +- .../data/minecraft/item/wooden_hoe.json | 2 +- .../data/minecraft/item/wooden_pickaxe.json | 2 +- .../data/minecraft/item/wooden_shovel.json | 2 +- .../data/minecraft/item/wooden_sword.json | 2 +- .../data/minecraft/item/zoglin_spawn_egg.json | 9 +- .../item/zombie_horse_spawn_egg.json | 9 +- .../data/minecraft/item/zombie_spawn_egg.json | 9 +- .../item/zombie_villager_spawn_egg.json | 9 +- .../item/zombified_piglin_spawn_egg.json | 9 +- .../functional_blocks.json | 3 +- .../data/minecraft/recipes/cake.json | 25 + .../data/minecraft/recipes/honey_block.json | 21 + .../data/minecraft/recipes/honey_bottle.json | 15 + .../recipes/shulker_box_coloring_black.json | 4 +- .../recipes/shulker_box_coloring_blue.json | 4 +- .../recipes/shulker_box_coloring_brown.json | 4 +- .../recipes/shulker_box_coloring_cyan.json | 4 +- .../recipes/shulker_box_coloring_gray.json | 4 +- .../recipes/shulker_box_coloring_green.json | 4 +- .../shulker_box_coloring_light_blue.json | 4 +- .../shulker_box_coloring_light_gray.json | 4 +- .../recipes/shulker_box_coloring_lime.json | 4 +- .../recipes/shulker_box_coloring_magenta.json | 4 +- .../recipes/shulker_box_coloring_orange.json | 4 +- .../recipes/shulker_box_coloring_pink.json | 4 +- .../recipes/shulker_box_coloring_purple.json | 4 +- .../recipes/shulker_box_coloring_red.json | 4 +- .../recipes/shulker_box_coloring_white.json | 4 +- .../recipes/shulker_box_coloring_yellow.json | 4 +- .../recipes/sugar_from_honey_bottle.json | 17 + .../proficient_with_golden_weapons.json | 7 - .../tags/item/furnace_minecart_fuel.json | 6 - .../tags/item/item_group/banner_patterns.json | 2 + .../tags/item/repairs_diamond_tool.json | 5 - .../minecraft/tags/item/repairs_elytra.json | 5 - .../tags/item/repairs_golden_tool.json | 5 - .../tags/item/repairs_iron_tool.json | 5 - .../minecraft/tags/item/repairs_mace.json | 5 - .../tags/item/repairs_netherite_tool.json | 5 - .../minecraft/tags/item/repairs_shield.json | 5 - .../tags/item/repairs_stone_tool.json | 5 - .../tags/item/repairs_wooden_tool.json | 5 - .../access/entity/LivingEntityAccess.java | 4 - .../access/recipe/IngredientAccess.java | 8 +- .../access/recipe/IngredientEntryAccess.java | 16 - .../access/recipe/RawShapedRecipeAccess.java | 9 + .../access/util/ActionResultAccess.java | 9 - .../component/ItematicDataComponentTypes.java | 5 +- .../type/ItemDamageRulesDataComponent.java | 4 +- .../type/UseDurationDataComponent.java | 33 +- .../type/WeaponAttackDamageDataComponent.java | 15 +- .../entity/ItematicEntityTypeTags.java | 16 - .../entity/effect/StatusEffectKeys.java | 15 +- .../entity/initializer/EntityInitializer.java | 3 +- .../ArmorStandEntityInitializer.java | 3 +- .../initializers/BoatEntityInitializer.java | 3 +- .../ChestBoatEntityInitializer.java | 3 +- .../DecorationEntityInitializer.java | 3 +- .../EndCrystalEntityInitializer.java | 3 +- .../EyeOfEnderEntityInitializer.java | 3 +- .../FireworkRocketEntityInitializer.java | 3 +- .../MinecartEntityInitializer.java | 3 +- ...PersistentProjectileEntityInitializer.java | 10 +- .../initializers/SimpleEntityInitializer.java | 5 +- .../SmallFireballEntityInitializer.java | 3 +- .../TridentEntityInitializer.java | 3 +- .../WindChargeEntityInitializer.java | 3 +- .../errorcraft/itematic/item/ItemKeys.java | 2 + .../errorcraft/itematic/item/ItemResult.java | 74 ++ .../errorcraft/itematic/item/ItemUtil.java | 782 ++++++++++++------ .../itematic/item/ItematicItemTags.java | 11 - .../itematic/item/armor/ArmorMaterial.java | 6 +- .../item/color/colors/ConstantItemColor.java | 2 +- .../item/color/colors/FireworkItemColor.java | 10 +- .../item/color/colors/FoliageItemColor.java | 2 +- .../item/color/colors/GrassItemColor.java | 2 +- .../item/color/colors/IndexItemColor.java | 3 +- .../item/color/colors/MapItemColor.java | 3 +- .../item/color/colors/PotionItemColor.java | 3 +- .../item/component/ItemComponent.java | 14 +- .../item/component/ItemComponentTypes.java | 2 - .../components/BlockItemComponent.java | 14 +- .../components/BrushItemComponent.java | 4 +- .../components/BucketItemComponent.java | 36 +- .../components/CastableItemComponent.java | 8 +- .../components/ConsumableItemComponent.java | 78 +- .../components/CooldownItemComponent.java | 31 +- .../components/DamageableItemComponent.java | 62 +- .../components/DebugStickItemComponent.java | 12 +- .../components/DyeItemComponent.java | 12 +- .../components/EnchantableItemComponent.java | 15 +- .../components/EntityItemComponent.java | 120 ++- .../components/EquipmentItemComponent.java | 25 +- .../components/FireworkItemComponent.java | 19 +- .../components/FoodItemComponent.java | 38 +- .../components/FuelItemComponent.java | 22 +- .../components/ItemHolderItemComponent.java | 27 +- .../components/MappableItemComponent.java | 8 +- .../OminousEffectProviderItemComponent.java | 25 +- .../components/PlayableItemComponent.java | 35 +- ...eventUseWhenUsedOnTargetItemComponent.java | 22 +- .../components/ProjectileItemComponent.java | 3 +- .../RecipeRemainderItemComponent.java | 31 - .../components/RepairableItemComponent.java | 19 +- .../components/SaddleItemComponent.java | 8 +- .../components/ShooterItemComponent.java | 12 +- .../SmithingTemplateItemComponent.java | 4 +- .../components/SpawnEggItemComponent.java | 7 +- .../components/SteeringItemComponent.java | 12 +- .../components/ThrowableItemComponent.java | 15 +- .../components/ToolItemComponent.java | 13 +- .../UnlockRecipesItemComponent.java | 6 +- .../components/UseableItemComponent.java | 73 +- .../UseableOnFluidItemComponent.java | 43 - .../components/WeaponItemComponent.java | 10 +- .../components/WritableItemComponent.java | 6 +- .../components/ZoomItemComponent.java | 6 +- .../dispense/behavior/DispenseBehaviors.java | 2 +- .../provider/ItemGroupEntryProviders.java | 10 +- .../overrides/CooldownModelOverride.java | 3 +- .../itematic/item/placement/BlockPlacer.java | 12 +- .../itematic/item/placement/EntityPlacer.java | 8 +- .../itematic/item/placement/FluidPlacer.java | 18 +- .../itematic/item/placement/Placer.java | 4 +- .../use/provider/IntegerProviderTypeKeys.java | 1 + .../use/provider/IntegerProviderTypes.java | 1 + .../providers/IndefiniteIntegerProvider.java | 31 + .../providers/PlayableIntegerProvider.java | 6 +- .../mixin/block/FenceBlockExtender.java | 23 - .../mixin/block/FlowerPotBlockExtender.java | 9 +- .../mixin/block/ScaffoldingBlockExtender.java | 4 +- .../cauldron/CauldronBehaviorExtender.java | 19 +- .../AbstractFurnaceBlockEntityExtender.java | 35 +- .../BrewingStandBlockEntityExtender.java | 36 +- .../type/BundleContentsComponentExtender.java | 5 +- .../type/ConsumableComponentAccessor.java | 13 + .../type/ConsumableComponentExtender.java | 33 + .../component/type/FoodComponentExtender.java | 24 - .../mixin/entity/EntityTypeExtender.java | 8 +- .../mixin/entity/LivingEntityExtender.java | 97 +-- .../mixin/entity/mob/MobEntityExtender.java | 2 +- .../entity/mob/PatrolEntityExtender.java | 17 +- .../mixin/entity/mob/SlimeEntityExtender.java | 1 - .../entity/passive/AllayEntityExtender.java | 9 +- .../entity/passive/GoatEntityExtender.java | 18 +- .../entity/passive/SheepEntityExtender.java | 36 - .../passive/SnowGolemEntityExtender.java | 12 - .../passive/VillagerEntityExtender.java | 16 +- .../WanderingTraderEntityExtender.java | 13 +- .../entity/passive/WolfEntityExtender.java | 49 +- .../player/ItemCooldownManagerExtender.java | 24 + .../entity/player/PlayerEntityExtender.java | 34 +- .../entity/raid/RaiderEntityExtender.java | 54 +- .../FurnaceMinecartEntityExtender.java | 16 - .../mixin/item/ArmorMaterialsAccessor.java | 43 + .../mixin/item/FuelRegistryExtender.java | 54 ++ .../mixin/item/HoneyBottleItemAccessor.java | 13 - .../itematic/mixin/item/ItemExtender.java | 167 ++-- .../mixin/item/ItemStackExtender.java | 156 ++-- .../mixin/item/KnowledgeBookItemExtender.java | 12 - .../mixin/item/MilkBucketItemAccessor.java | 15 - .../mixin/item/OminousBottleItemAccessor.java | 13 - .../mixin/item/PotionItemAccessor.java | 13 - .../item/SmithingTemplateItemAccessor.java | 5 + .../recipe/BannerDuplicateRecipeExtender.java | 16 - .../recipe/BookCloningRecipeExtender.java | 18 +- .../recipe/FireworkStarRecipeExtender.java | 26 +- .../mixin/recipe/IngredientExtender.java | 145 +--- .../mixin/recipe/InputSlotFillerExtender.java | 52 -- .../mixin/recipe/RawShapedRecipeExtender.java | 55 ++ .../itematic/mixin/recipe/RecipeExtender.java | 21 - .../mixin/recipe/RecipeMatcherExtender.java | 24 - .../mixin/recipe/ShapedRecipeExtender.java | 24 + .../mixin/recipe/ShapelessRecipeExtender.java | 49 ++ .../recipe/SuspiciousStewRecipeExtender.java | 115 --- .../mixin/util/ActionResultExtender.java | 58 -- .../mixin/util/UseActionExtender.java | 30 - .../mixin/village/raid/RaidExtender.java | 16 +- .../itematic/recipe/ItemColoringRecipe.java | 18 +- .../itematic/util/UseActionUtil.java | 19 - .../itematic/village/raid/RaidUtil.java | 21 +- .../itematic/world/action/ActionTypeKeys.java | 1 + .../itematic/world/action/ActionTypes.java | 1 + .../itematic/world/action/Actions.java | 34 +- .../actions/AddStatusEffectsAction.java | 45 + .../action/actions/DisplayParticleAction.java | 2 +- .../action/actions/PlaceBlockAction.java | 2 +- .../action/actions/SpawnEntityAction.java | 2 +- .../actions/SpawnEntityFromItemAction.java | 2 +- .../world/action/actions/UseBucketAction.java | 2 +- src/main/resources/fabric.mod.json | 12 - src/main/resources/itematic.classtweaker | 2 +- src/main/resources/itematic.mixins.json | 25 +- 466 files changed, 3536 insertions(+), 3152 deletions(-) delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeAlternativesWidgetAccessor.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookGhostSlotsExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/network/ClientTagLoaderExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/SnowGolemPumpkinFeatureRendererExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/model/ModelLoaderExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/tutorial/BundleTutorialExtender.java rename src/client/java/net/errorcraft/itematic/mixin/client/{render/WorldRendererExtender.java => world/WorldEventHandlerExtender.java} (84%) delete mode 100644 src/datagen/java/net/errorcraft/itematic/data/server/tag/EntityTypeTagProvider.java create mode 100644 src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java delete mode 100644 src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java create mode 100644 src/gametest/resources/data/itematic/gametest/structure/block.brewing_stand.snbt create mode 100644 src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json create mode 100644 src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json create mode 100644 src/main/generated/data/minecraft/recipes/cake.json create mode 100644 src/main/generated/data/minecraft/recipes/honey_block.json create mode 100644 src/main/generated/data/minecraft/recipes/honey_bottle.json create mode 100644 src/main/generated/data/minecraft/recipes/sugar_from_honey_bottle.json delete mode 100644 src/main/generated/data/minecraft/tags/entity_type/proficient_with_golden_weapons.json delete mode 100644 src/main/generated/data/minecraft/tags/item/furnace_minecart_fuel.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_diamond_tool.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_elytra.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_golden_tool.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_iron_tool.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_mace.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_netherite_tool.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_shield.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_stone_tool.json delete mode 100644 src/main/generated/data/minecraft/tags/item/repairs_wooden_tool.json delete mode 100644 src/main/java/net/errorcraft/itematic/access/recipe/IngredientEntryAccess.java create mode 100644 src/main/java/net/errorcraft/itematic/access/recipe/RawShapedRecipeAccess.java delete mode 100644 src/main/java/net/errorcraft/itematic/access/util/ActionResultAccess.java delete mode 100644 src/main/java/net/errorcraft/itematic/entity/ItematicEntityTypeTags.java create mode 100644 src/main/java/net/errorcraft/itematic/item/ItemResult.java delete mode 100644 src/main/java/net/errorcraft/itematic/item/component/components/RecipeRemainderItemComponent.java delete mode 100644 src/main/java/net/errorcraft/itematic/item/component/components/UseableOnFluidItemComponent.java create mode 100644 src/main/java/net/errorcraft/itematic/item/use/provider/providers/IndefiniteIntegerProvider.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/block/FenceBlockExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentAccessor.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/component/type/FoodComponentExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/player/ItemCooldownManagerExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/FuelRegistryExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/HoneyBottleItemAccessor.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/MilkBucketItemAccessor.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/OminousBottleItemAccessor.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/PotionItemAccessor.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/InputSlotFillerExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeMatcherExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/SuspiciousStewRecipeExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/util/ActionResultExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/util/UseActionExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/util/UseActionUtil.java create mode 100644 src/main/java/net/errorcraft/itematic/world/action/actions/AddStatusEffectsAction.java diff --git a/gradle.properties b/gradle.properties index 35aa8830..34a658b9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,14 +3,14 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.21.1 - yarn_mappings=1.21.1+build.3 + minecraft_version=24w34a + yarn_mappings=24w34a+build.12 loader_version=0.18.4 # Mod Properties - mod_version = 0.4.0+1.21.1 + mod_version = 0.4.1+1.21.1 maven_group = net.errorcraft archives_base_name = itematic # Dependencies - fabric_version=0.116.7+1.21.1 + fabric_version=0.103.0+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyle.java b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyle.java index 7632a913..03f8b93d 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyle.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyle.java @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.util.dynamic.Codecs; +import net.minecraft.util.math.ColorHelper; import java.util.List; @@ -26,15 +27,17 @@ public Identifier progressTexture(ItemStack stack) { if (progress <= 0.0f) { return this.textures.getFirst(); } + if (progress >= 1.0f) { return this.textures.getLast(); } + int index = (int) (progress * (this.textures.size() - 1)); return this.textures.get(index); } public int color(ItemStack stack) { float progress = this.progress.get(stack); - return this.color.get(progress); + return ColorHelper.fullAlpha(this.color.get(progress)); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java index 44b4aafb..457a1cd7 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java @@ -10,8 +10,6 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.texture.GuiAtlasManager; -import net.minecraft.client.texture.Sprite; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; @@ -25,14 +23,16 @@ import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.util.function.Function; + @Mixin(DrawContext.class) public abstract class DrawContextExtender { @Shadow @Final - private GuiAtlasManager guiAtlasManager; + private MatrixStack matrices; @Shadow - public abstract void drawSprite(int x, int y, int z, int width, int height, Sprite sprite, float red, float green, float blue, float alpha); + public abstract void drawGuiTexture(Function function, Identifier identifier, int i, int j, int k, int l, int m); @Unique private ItemBarStyleLoader itemBarStyles; @@ -73,15 +73,22 @@ private void renderItemBarFromDataComponent(TextRenderer textRenderer, ItemStack if (itemBarStyleId == null) { return; } - this.itemBarStyles.get(itemBarStyleId).ifPresent(itemBarStyle -> this.drawGuiTexture( - itemBarStyle.progressTexture(stack), - x, - y, - 200, - 16, - 16, - itemBarStyle.color(stack) - )); + + this.itemBarStyles.get(itemBarStyleId).ifPresent(itemBarStyle -> { + if (stack.getCount() == 1 && countOverride == null) { + this.matrices.translate(0.0f, 0.0f, 200.0f); + } + + this.drawGuiTexture( + RenderLayer::getGuiTextured, + itemBarStyle.progressTexture(stack), + x, + y, + 16, + 16, + itemBarStyle.color(stack) + ); + }); } @Redirect( @@ -102,13 +109,4 @@ private void renderItemBarFromDataComponent(TextRenderer textRenderer, ItemStack ) ) private void doNotRenderOriginalItemBar(DrawContext instance, RenderLayer layer, int x1, int y1, int x2, int y2, int color) {} - - @Unique - private void drawGuiTexture(Identifier texture, int x, int y, int z, int width, int height, int color) { - float red = ((color >> 16) & 0xff) / 255.0f; - float green = ((color >> 8) & 0xff) / 255.0f; - float blue = (color & 0xff) / 255.0f; - Sprite sprite = this.guiAtlasManager.getSprite(texture); - this.drawSprite(x, y, z, width, height, sprite, red, green, blue, 1.0f); - } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java index 17bd5f2a..f79debb9 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java @@ -14,7 +14,7 @@ import net.minecraft.registry.DefaultedRegistry; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.TagKey; +import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -73,7 +73,7 @@ private ItemStack getIconUseDynamicRegistry(ItemGroup instance, DrawContext cont ) ) @SuppressWarnings("ConstantConditions") - private Stream> streamTagsUseDynamicRegistry(DefaultedRegistry instance) { + private Stream> streamTagsUseDynamicRegistry(DefaultedRegistry instance) { return this.client.world.getRegistryManager() .get(RegistryKeys.ITEM) .streamTags(); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java index b0c8b682..26dfe447 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java @@ -2,27 +2,33 @@ import net.errorcraft.itematic.access.client.gui.screen.recipebook.RecipeBookWidgetAccess; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.client.gui.screen.recipebook.AbstractFurnaceRecipeBookScreen; +import net.minecraft.client.gui.screen.recipebook.AbstractFurnaceRecipeBookWidget; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; +import net.minecraft.screen.AbstractFurnaceScreenHandler; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(AbstractFurnaceRecipeBookScreen.class) -public class AbstractFurnaceRecipeBookScreenExtender extends RecipeBookWidget implements RecipeBookWidgetAccess { +import java.util.List; + +@Mixin(AbstractFurnaceRecipeBookWidget.class) +public abstract class AbstractFurnaceRecipeBookScreenExtender extends RecipeBookWidget implements RecipeBookWidgetAccess { @Shadow @Nullable - private Ingredient fuels; + private List fuels; + + public AbstractFurnaceRecipeBookScreenExtender(AbstractFurnaceScreenHandler craftingScreenHandler) { + super(craftingScreenHandler); + } @Override public void itematic$initializeRecipeSpecific(World world) { - this.fuels = Ingredient.ofStacks(world.itematic$getItemAccess() + this.fuels = world.itematic$getItemAccess() .streamEntries() .filter(reference -> reference.value().itematic$hasComponent(ItemComponentTypes.FUEL)) .map(ItemStack::new) - ); + .toList(); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeAlternativesWidgetAccessor.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeAlternativesWidgetAccessor.java deleted file mode 100644 index 5cf6acc1..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeAlternativesWidgetAccessor.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.errorcraft.itematic.mixin.client.gui.screen.recipebook; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.recipebook.RecipeAlternativesWidget; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(RecipeAlternativesWidget.class) -public interface RecipeAlternativesWidgetAccessor { - @Accessor("client") - MinecraftClient client(); - - @Mixin(targets = "net.minecraft.client.gui.screen.recipebook.RecipeAlternativesWidget$AlternativeButtonWidget") - class AlternativeButtonWidgetExtender { - @Shadow - @Final - RecipeAlternativesWidget field_3113; - - @Redirect( - method = "acceptAlignedInput", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;getMatchingStacks()[Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack[] getMatchingStacksUseDynamicRegistry(Ingredient instance) { - ClientWorld world = ((RecipeAlternativesWidgetAccessor) this.field_3113).client().world; - if (world == null) { - return new ItemStack[0]; - } - return instance.itematic$getMatchingStacks(world.getRegistryManager()); - } - } - - @Mixin(targets = "net.minecraft.client.gui.screen.recipebook.RecipeAlternativesWidget$FurnaceAlternativeButtonWidget") - class FurnaceAlternativeButtonWidgetExtender { - @Redirect( - method = "alignRecipe", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;getMatchingStacks()[Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack[] getMatchingStacksUseDynamicRegistry(Ingredient instance) { - ClientWorld world = MinecraftClient.getInstance().world; - if (world == null) { - return new ItemStack[0]; - } - return instance.itematic$getMatchingStacks(world.getRegistryManager()); - } - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookGhostSlotsExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookGhostSlotsExtender.java deleted file mode 100644 index 6255d856..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookGhostSlotsExtender.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.errorcraft.itematic.mixin.client.gui.screen.recipebook; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.recipebook.RecipeBookGhostSlots; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -public class RecipeBookGhostSlotsExtender { - @Mixin(RecipeBookGhostSlots.GhostInputSlot.class) - public static class GhostInputSlotExtender { - @Redirect( - method = "getCurrentItemStack", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;getMatchingStacks()[Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack[] getMatchingStacksUseDynamicRegistry(Ingredient instance) { - ClientWorld world = MinecraftClient.getInstance().world; - if (world == null) { - return new ItemStack[0]; - } - return instance.itematic$getMatchingStacks(world.getRegistryManager()); - } - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java index 0aec395b..86f555d3 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java @@ -3,7 +3,6 @@ import net.errorcraft.itematic.access.client.gui.screen.recipebook.RecipeBookWidgetAccess; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; -import net.minecraft.screen.AbstractRecipeScreenHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,7 +14,7 @@ public class RecipeBookWidgetExtender implements RecipeBookWidgetAccess { method = "initialize", at = @At("TAIL") ) - private void initializeAllowRecipeSpecificInitialization(int parentWidth, int parentHeight, MinecraftClient client, boolean narrow, AbstractRecipeScreenHandler craftingScreenHandler, CallbackInfo info) { + private void initializeAllowRecipeSpecificInitialization(int parentWidth, int parentHeight, MinecraftClient client, boolean narrow, CallbackInfo info) { this.itematic$initializeRecipeSpecific(client.world); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipComponentExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipComponentExtender.java index 70552edb..2ec032fb 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipComponentExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipComponentExtender.java @@ -15,7 +15,7 @@ public class BundleTooltipComponentExtender implements BundleTooltipComponentAcc private Fraction capacity; @Redirect( - method = "drawItems", + method = "getProgressBarLabel", at = @At( value = "FIELD", target = "Lorg/apache/commons/lang3/math/Fraction;ONE:Lorg/apache/commons/lang3/math/Fraction;", diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java index ab028ced..ba8cd583 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java @@ -3,6 +3,7 @@ import net.errorcraft.itematic.access.network.listener.ClientPlayPacketListenerAccess; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.errorcraft.itematic.mixin.item.ItemGroupsAccessor; import net.errorcraft.itematic.network.packet.s2c.play.TwirlS2CPacket; import net.errorcraft.itematic.world.action.actions.TwirlPlayerAction; import net.minecraft.client.MinecraftClient; @@ -18,7 +19,9 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ClientPlayNetworkHandler.class) public abstract class ClientPlayNetworkHandlerExtender extends ClientCommonNetworkHandler implements ClientPlayPacketListenerAccess { @@ -29,6 +32,17 @@ protected ClientPlayNetworkHandlerExtender(MinecraftClient client, ClientConnect super(client, connection, connectionState); } + @Inject( + method = "onSynchronizeTags", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemGroups;getSearchGroup()Lnet/minecraft/item/ItemGroup;" + ) + ) + private static void resetItemGroupDisplayContext(CallbackInfo info) { + ItemGroupsAccessor.setDisplayContext(null); + } + @Redirect( method = "getActiveTotemOfUndying", at = @At( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientTagLoaderExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientTagLoaderExtender.java deleted file mode 100644 index 23f533cf..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientTagLoaderExtender.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.errorcraft.itematic.mixin.client.network; - -import net.errorcraft.itematic.mixin.item.ItemGroupsAccessor; -import net.minecraft.client.network.ClientTagLoader; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ClientTagLoader.class) -public class ClientTagLoaderExtender { - @Inject( - method = "load(Lnet/minecraft/registry/DynamicRegistryManager;Z)V", - at = @At("RETURN") - ) - private static void resetItemGroupDisplayContext(CallbackInfo info) { - ItemGroupsAccessor.setDisplayContext(null); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java index 6c453d77..642637e5 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java @@ -13,7 +13,7 @@ @Mixin(PlayerEntityRenderer.class) public class PlayerEntityRendererExtender { @Redirect( - method = "getArmPose", + method = "updateHandState", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java index 19d0b687..67814698 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java @@ -15,11 +15,11 @@ import net.minecraft.client.render.entity.feature.ArmorFeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRendererContext; import net.minecraft.client.render.entity.model.BipedEntityModel; +import net.minecraft.client.render.entity.state.BipedEntityRenderState; import net.minecraft.client.render.model.BakedModelManager; import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; import net.minecraft.item.ArmorItem; import net.minecraft.item.ArmorMaterial; import net.minecraft.item.Item; @@ -38,16 +38,16 @@ import java.util.stream.Stream; @Mixin(ArmorFeatureRenderer.class) -public class ArmorFeatureRendererExtender, A extends BipedEntityModel> { +public class ArmorFeatureRendererExtender, A extends BipedEntityModel> { @Unique private SpriteAtlasTexture armorMaterialsAtlas; @Inject( - method = "", + method = "(Lnet/minecraft/client/render/entity/feature/FeatureRendererContext;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/model/BakedModelManager;)V", at = @At("TAIL") ) - private void setArmorMaterialsAtlas(FeatureRendererContext context, A innerModel, A outerModel, BakedModelManager bakery, CallbackInfo info) { - this.armorMaterialsAtlas = bakery.getAtlas(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE); + private void setArmorMaterialsAtlas(FeatureRendererContext context, A innerModel, A outerModel, A babyInnerModel, A babyOuterModel, BakedModelManager bakedModelManager, CallbackInfo info) { + this.armorMaterialsAtlas = bakedModelManager.getAtlas(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE); } @ModifyConstant( @@ -57,7 +57,7 @@ private void setArmorMaterialsAtlas(FeatureRendererContext context, A inne ordinal = 0 ) ) - private boolean instanceOfArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { + private boolean instanceOfArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local(argsOnly = true) ItemStack itemStack, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.EQUIPMENT); optionalComponent.ifPresent(equipmentItemComponent::set); return optionalComponent.isPresent(); @@ -91,12 +91,13 @@ private EquipmentSlot getSlotTypeUseItemComponent(ArmorItem instance, @Share("eq ), cancellable = true ) - private void storeArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, T entity, EquipmentSlot armorSlot, int light, A model, CallbackInfo info, @Local ItemStack itemStack, @Share("armorItemComponent") LocalRef armorItemComponent) { + private void storeArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, ItemStack stack, EquipmentSlot armorSlot, int light, A model, CallbackInfo info, @Local(argsOnly = true) ItemStack itemStack, @Share("armorItemComponent") LocalRef armorItemComponent) { Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.ARMOR); if (optionalComponent.isEmpty()) { info.cancel(); return; } + armorItemComponent.set(optionalComponent.get()); } @@ -178,7 +179,7 @@ private Iterator iteratorForLayersUseCustomIterator(List instance target = "Ljava/util/Iterator;next()Ljava/lang/Object;" ) ) - private E nextElementForIteratorReturnNull(Iterator instance, @Share("tintedItemComponent") LocalRef tintedItemComponent) { + private E nextElementForIteratorReturnNull(Iterator instance) { return null; } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java index 9cabe9ba..012269ba 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java @@ -11,7 +11,7 @@ @Mixin(CapeFeatureRenderer.class) public class CapeFeatureRendererExtender { @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/network/AbstractClientPlayerEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/PlayerEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java index 603ccb54..1408fac6 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java @@ -11,7 +11,7 @@ @Mixin(ElytraFeatureRenderer.class) public class ElytraFeatureRendererExtender { @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/BipedEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java index c9cf1200..58257227 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java @@ -18,7 +18,7 @@ @Mixin(HeadFeatureRenderer.class) public class HeadFeatureRendererExtender { @ModifyConstant( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", constant = @Constant( classValue = ArmorItem.class, ordinal = 0 @@ -31,7 +31,7 @@ private boolean renderInstanceOfArmorItemUseItemComponentCheck(Object reference, } @ModifyVariable( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At("LOAD"), slice = @Slice( from = @At( @@ -45,7 +45,7 @@ private Item renderCastToArmorItemUseNull(Item instance) { } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ArmorItem;getSlotType()Lnet/minecraft/entity/EquipmentSlot;" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java index 2974c241..a95aa62f 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java @@ -31,7 +31,7 @@ public class HorseArmorFeatureRendererExtender implements HorseArmorFeatureRende private SpriteAtlasTexture armorMaterialsAtlas; @ModifyConstant( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", constant = @Constant( classValue = AnimalArmorItem.class, ordinal = 0 @@ -44,7 +44,7 @@ private boolean instanceOfAnimalArmorItemUseItemComponentCheck(Object reference, } @ModifyVariable( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At("LOAD") ) private Item castToAnimalArmorItemUseNull(Item instance) { @@ -52,7 +52,7 @@ private Item castToAnimalArmorItemUseNull(Item instance) { } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/AnimalArmorItem;getType()Lnet/minecraft/item/AnimalArmorItem$Type;" @@ -63,7 +63,7 @@ private AnimalArmorItem.Type getTypeUseItemComponent(AnimalArmorItem instance, @ } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/AnimalArmorItem;getEntityTexture()Lnet/minecraft/util/Identifier;" @@ -74,7 +74,7 @@ private Identifier getEntityTextureReturnNull(AnimalArmorItem instance) { } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/RenderLayer;getEntityCutoutNoCull(Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/render/RenderLayer;" @@ -85,7 +85,7 @@ private RenderLayer getEntityCutoutNoCullReturnNull(Identifier texture) { } @ModifyArg( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" @@ -96,7 +96,7 @@ private RenderLayer useArmorMaterialRenderLayer(RenderLayer layer) { } @ModifyExpressionValue( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" @@ -108,7 +108,7 @@ private VertexConsumer useArmorMaterialsAtlas(VertexConsumer original, @Share("a } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" @@ -121,7 +121,7 @@ private boolean isInForDyeableItemUseItemComponentCheck(ItemStack instance, TagK } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/HorseEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/component/type/DyedColorComponent;getColor(Lnet/minecraft/item/ItemStack;I)I" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/SnowGolemPumpkinFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/SnowGolemPumpkinFeatureRendererExtender.java deleted file mode 100644 index 921ad481..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/SnowGolemPumpkinFeatureRendererExtender.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.entity.feature; - -import com.llamalad7.mixinextras.sugar.Local; -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.client.render.entity.feature.SnowGolemPumpkinFeatureRenderer; -import net.minecraft.entity.passive.SnowGolemEntity; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(SnowGolemPumpkinFeatureRenderer.class) -public class SnowGolemPumpkinFeatureRendererExtender { - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/SnowGolemEntity;FFFFFF)V", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForCarvedPumpkinUseCreateStack(ItemConvertible item, @Local(argsOnly = true) SnowGolemEntity snowGolemEntity) { - return snowGolemEntity.getWorld().itematic$createStack(ItemKeys.CARVED_PUMPKIN); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java index 7ad22388..5d443151 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java @@ -9,6 +9,7 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.ArmorItemComponent; import net.errorcraft.itematic.item.component.components.TintedItemComponent; +import net.minecraft.client.model.Model; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; @@ -34,7 +35,7 @@ public class WolfArmorFeatureRendererExtender implements WolfArmorFeatureRendere private SpriteAtlasTexture armorMaterialsAtlas; @ModifyConstant( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", constant = @Constant( classValue = AnimalArmorItem.class, ordinal = 0 @@ -47,7 +48,7 @@ private boolean instanceOfAnimalArmorItemUseItemComponentCheck(Object reference, } @ModifyVariable( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", at = @At("LOAD") ) private Item castToAnimalArmorItemUseNull(Item instance) { @@ -55,7 +56,7 @@ private Item castToAnimalArmorItemUseNull(Item instance) { } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/AnimalArmorItem;getType()Lnet/minecraft/item/AnimalArmorItem$Type;" @@ -66,7 +67,7 @@ private AnimalArmorItem.Type getTypeUseItemComponent(AnimalArmorItem instance, @ } @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/AnimalArmorItem;getEntityTexture()Lnet/minecraft/util/Identifier;" @@ -77,7 +78,10 @@ private Identifier getEntityTextureReturnNull(AnimalArmorItem instance) { } @Redirect( - method = { "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", "renderDyed" }, + method = { + "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", + "renderDyed" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/RenderLayer;getEntityCutoutNoCull(Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/render/RenderLayer;" @@ -88,7 +92,10 @@ private RenderLayer getEntityCutoutNoCullReturnNull(Identifier texture) { } @ModifyArg( - method = { "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", "renderDyed" }, + method = { + "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", + "renderDyed" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" @@ -99,7 +106,10 @@ private RenderLayer useArmorMaterialRenderLayer(RenderLayer layer) { } @ModifyExpressionValue( - method = { "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/WolfEntity;FFFFFF)V", "renderDyed" }, + method = { + "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", + "renderDyed" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" @@ -114,7 +124,7 @@ private VertexConsumer useArmorMaterialsAtlas(VertexConsumer original, @Share("a method = "renderDyed", at = @At("HEAD") ) - private void setArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, ItemStack stack, AnimalArmorItem item, CallbackInfo info, @Share("armorItemComponent") LocalRef armorItemComponent) { + private void setArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, ItemStack stack, AnimalArmorItem item, Model model, CallbackInfo info, @Share("armorItemComponent") LocalRef armorItemComponent) { armorItemComponent.set(stack.itematic$getComponent(ItemComponentTypes.ARMOR).orElseThrow()); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/DrownedEntityModelExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/DrownedEntityModelExtender.java index 2b97e246..b915bdda 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/DrownedEntityModelExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/DrownedEntityModelExtender.java @@ -11,7 +11,7 @@ @Mixin(DrownedEntityModel.class) public class DrownedEntityModelExtender { @Redirect( - method = "animateModel(Lnet/minecraft/entity/mob/ZombieEntity;FFF)V", + method = "getArmPose(Lnet/minecraft/client/render/entity/state/ZombieEntityRenderState;Lnet/minecraft/util/Arm;)Lnet/minecraft/client/render/entity/model/BipedEntityModel$ArmPose;", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/SkeletonEntityModelExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/SkeletonEntityModelExtender.java index 86a7a586..85e32b2a 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/SkeletonEntityModelExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/model/SkeletonEntityModelExtender.java @@ -11,7 +11,10 @@ @Mixin(SkeletonEntityModel.class) public class SkeletonEntityModelExtender { @Redirect( - method = { "animateModel(Lnet/minecraft/entity/mob/MobEntity;FFF)V", "setAngles(Lnet/minecraft/entity/mob/MobEntity;FFFFF)V" }, + method = { + "getArmPose(Lnet/minecraft/client/render/entity/state/SkeletonEntityRenderState;Lnet/minecraft/util/Arm;)Lnet/minecraft/client/render/entity/model/BipedEntityModel$ArmPose;", + "setAngles(Lnet/minecraft/client/render/entity/state/SkeletonEntityRenderState;)V" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/feature/WitchHeldItemFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/feature/WitchHeldItemFeatureRendererExtender.java index e095009c..76681564 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/feature/WitchHeldItemFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/feature/WitchHeldItemFeatureRendererExtender.java @@ -11,7 +11,7 @@ @Mixin(WitchHeldItemFeatureRenderer.class) public class WitchHeldItemFeatureRendererExtender { @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WitchEntityRenderState;FF)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java index d96388d9..8a87ff64 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java @@ -5,6 +5,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.registry.DefaultedRegistry; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -27,7 +28,11 @@ private Iterator doNotRegisterItems(DefaultedRegistry instance) { } @Redirect( - method = { "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", "getModel" }, + method = { + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", + "getModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)Lnet/minecraft/client/render/model/BakedModel;", + "method_62476" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -36,7 +41,8 @@ private Iterator doNotRegisterItems(DefaultedRegistry instance) { slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/item/Items;TRIDENT:Lnet/minecraft/item/Item;" + target = "Lnet/minecraft/item/Items;TRIDENT:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC ) ) ) @@ -45,7 +51,10 @@ private boolean isOfForTridentUseRegistryKeyCheck(ItemStack instance, Item item) } @Redirect( - method = { "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", "getModel" }, + method = { + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", + "getModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)Lnet/minecraft/client/render/model/BakedModel;" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -54,7 +63,8 @@ private boolean isOfForTridentUseRegistryKeyCheck(ItemStack instance, Item item) slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/item/Items;SPYGLASS:Lnet/minecraft/item/Item;" + target = "Lnet/minecraft/item/Items;SPYGLASS:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC ) ) ) @@ -62,24 +72,6 @@ private boolean isOfForSpyglassUseRegistryKeyCheck(ItemStack instance, Item item return instance.itematic$isOf(ItemKeys.SPYGLASS); } - @Redirect( - method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/model/BakedModel;isBuiltin()Z" - ) - ) - ) - private boolean isOfForTridentBuiltinCheckUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.TRIDENT); - } - @Redirect( method = "usesDynamicDisplay", at = @At( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/ModelLoaderExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/model/ModelLoaderExtender.java deleted file mode 100644 index f8be3bda..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/ModelLoaderExtender.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.model; - -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.render.model.BlockStatesLoader; -import net.minecraft.client.render.model.ModelLoader; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.client.render.model.json.JsonUnbakedModel; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.item.Item; -import net.minecraft.registry.DefaultedRegistry; -import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -@Mixin(ModelLoader.class) -public abstract class ModelLoaderExtender { - @Shadow - protected abstract void addModelToBake(ModelIdentifier id, UnbakedModel model); - - @Shadow - protected abstract void loadInventoryVariantItemModel(Identifier id); - - @Unique - private static final String ITEM_MODEL_PREFIX = "models/item/"; - - @Unique - private static final int ITEM_MODEL_PREFIX_LENGTH = ITEM_MODEL_PREFIX.length(); - - @Unique - private static final int FILE_SUFFIX_LENGTH = ".json".length(); - - @Redirect( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/registry/DefaultedRegistry;getIds()Ljava/util/Set;" - ) - ) - private Set getIdsForItemsReturnEmptySet(DefaultedRegistry instance) { - return Set.of(); - } - - @Inject( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", - ordinal = 0, - shift = At.Shift.AFTER - ), - slice = @Slice( - from = @At( - value = "CONSTANT", - args = "stringValue=items" - ) - ) - ) - private void addAllLoadedItemModels(BlockColors blockColors, Profiler profiler, Map jsonUnbakedModels, Map> blockStates, CallbackInfo info) { - for (Identifier identifier : jsonUnbakedModels.keySet()) { - if (identifier.getPath().startsWith(ITEM_MODEL_PREFIX)) { - Identifier actualId = identifier.withPath(path -> path.substring(ITEM_MODEL_PREFIX_LENGTH, path.length() - FILE_SUFFIX_LENGTH)); - this.loadInventoryVariantItemModel(actualId); - } - } - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java index 2da138ee..0649aa64 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java @@ -15,17 +15,18 @@ @Mixin(RecipeToast.class) public class RecipeToastExtender { @Redirect( - method = "draw", + method = "show", at = @At( value = "INVOKE", target = "Lnet/minecraft/recipe/Recipe;createIcon()Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack createIconUseDynamicRegistry(Recipe instance, @Local(argsOnly = true) ToastManager manager) { + private static ItemStack createIconUseDynamicRegistry(Recipe instance, @Local(argsOnly = true) ToastManager manager) { ClientWorld world = manager.getClient().world; if (world == null) { return ItemStack.EMPTY; } + return ((RecipeAccess) instance).itematic$createIcon(world.getRegistryManager().getWrapperOrThrow(RegistryKeys.ITEM)); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/tutorial/BundleTutorialExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/tutorial/BundleTutorialExtender.java deleted file mode 100644 index 2cc8a0e3..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/tutorial/BundleTutorialExtender.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.errorcraft.itematic.mixin.client.tutorial; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.client.tutorial.BundleTutorial; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(BundleTutorial.class) -public class BundleTutorialExtender { - @Redirect( - method = "onPickupSlotClick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForBundleUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BUNDLE); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/WorldRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/world/WorldEventHandlerExtender.java similarity index 84% rename from src/client/java/net/errorcraft/itematic/mixin/client/render/WorldRendererExtender.java rename to src/client/java/net/errorcraft/itematic/mixin/client/world/WorldEventHandlerExtender.java index 7bc8a4dc..51da31a5 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/WorldRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/world/WorldEventHandlerExtender.java @@ -1,21 +1,23 @@ -package net.errorcraft.itematic.mixin.client.render; +package net.errorcraft.itematic.mixin.client.world; import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.client.world.ClientWorld; +import net.minecraft.client.world.WorldEventHandler; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; -@Mixin(WorldRenderer.class) -public class WorldRendererExtender { +@Mixin(WorldEventHandler.class) +public class WorldEventHandlerExtender { @Shadow - private ClientWorld world; + @Final + private World world; @Redirect( method = "processWorldEvent", diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index d4a3394c..4a476ccd 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -26,10 +26,6 @@ "gui.screen.ingame.LoomScreenExtender", "gui.screen.ingame.SmithingScreenExtender", "gui.screen.recipebook.AbstractFurnaceRecipeBookScreenExtender", - "gui.screen.recipebook.RecipeAlternativesWidgetAccessor", - "gui.screen.recipebook.RecipeAlternativesWidgetAccessor$AlternativeButtonWidgetExtender", - "gui.screen.recipebook.RecipeAlternativesWidgetAccessor$FurnaceAlternativeButtonWidgetExtender", - "gui.screen.recipebook.RecipeBookGhostSlotsExtender$GhostInputSlotExtender", "gui.screen.recipebook.RecipeBookWidgetExtender", "gui.screen.recipebook.RecipeGroupButtonWidgetExtender", "gui.screen.world.LevelScreenProviderExtender", @@ -40,12 +36,10 @@ "network.ClientPlayerEntityExtender", "network.ClientPlayerInteractionManagerExtender", "network.ClientPlayNetworkHandlerExtender", - "network.ClientTagLoaderExtender", "option.HotbarStorageEntryExtender", "particle.CrackParticleExtender$SlimeballFactoryExtender", "particle.CrackParticleExtender$SnowballFactoryExtender", "recipebook.RecipeBookGroupExtender", - "render.WorldRendererExtender", "render.block.BlockRenderManagerExtender", "render.block.entity.DecoratedPotBlockEntityRendererExtender", "render.entity.FishingBobberEntityRendererExtender", @@ -60,7 +54,6 @@ "render.entity.feature.HeadFeatureRendererExtender", "render.entity.feature.HorseArmorFeatureRendererExtender", "render.entity.feature.PlayerHeldItemFeatureRendererExtender", - "render.entity.feature.SnowGolemPumpkinFeatureRendererExtender", "render.entity.feature.WolfArmorFeatureRendererExtender", "render.entity.model.DrownedEntityModelExtender", "render.entity.model.SkeletonEntityModelExtender", @@ -70,12 +63,11 @@ "render.item.ItemModelsExtender", "render.item.ItemRendererExtender", "render.model.BakedModelManagerExtender", - "render.model.ModelLoaderExtender", "render.model.json.ModelOverrideListExtender", "toast.RecipeToastExtender", - "tutorial.BundleTutorialExtender", "tutorial.CraftPlanksTutorialStepHandlerExtender", - "world.ClientWorldExtender" + "world.ClientWorldExtender", + "world.WorldEventHandlerExtender" ], "injectors": { "defaultRequire": 1 diff --git a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java index fff195ba..5511548a 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java +++ b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java @@ -35,7 +35,6 @@ public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { pack.addProvider(RecipeProvider::new); pack.addProvider(PotionTagProvider::new); pack.addProvider(DispenseBehaviorProvider::new); - pack.addProvider(EntityTypeTagProvider::new); pack.addProvider(ItemBarStyleProvider::new); } } diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java index a7c35f37..de95e533 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java @@ -1,25 +1,34 @@ package net.errorcraft.itematic.data.server; +import it.unimi.dsi.fastutil.chars.Char2ObjectMap; +import it.unimi.dsi.fastutil.chars.Char2ObjectOpenHashMap; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.ItematicItemTags; import net.errorcraft.itematic.recipe.ItemColoringRecipe; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricCodecDataProvider; import net.minecraft.data.DataOutput; +import net.minecraft.data.server.recipe.CraftingRecipeJsonBuilder; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.*; import net.minecraft.recipe.book.CraftingRecipeCategory; +import net.minecraft.recipe.book.RecipeCategory; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; +@SuppressWarnings("SameParameterValue") public class RecipeProvider extends FabricCodecDataProvider> { public RecipeProvider(FabricDataOutput dataOutput, CompletableFuture registriesFuture) { super(dataOutput, registriesFuture, DataOutput.OutputType.DATA_PACK, "recipes", Recipe.CODEC); @@ -28,69 +37,118 @@ public RecipeProvider(FabricDataOutput dataOutput, CompletableFuture> provider, RegistryWrapper.WrapperLookup lookup) { RegistryWrapper.Impl items = lookup.getWrapperOrThrow(RegistryKeys.ITEM); + provider.accept( + Identifier.ofVanilla("honey_bottle"), + shapelessRecipe(RecipeCategory.MISC, items.getOrThrow(ItemKeys.HONEY_BOTTLE)) + .input(items.getOrThrow(ItemKeys.HONEY_BLOCK)) + .input(items.getOrThrow(ItemKeys.GLASS_BOTTLE), 4) + .build() + ); + provider.accept( + Identifier.ofVanilla("honey_block"), + shapedRecipe(RecipeCategory.FOOD, items.getOrThrow(ItemKeys.HONEY_BLOCK)) + .input('#', items.getOrThrow(ItemKeys.HONEY_BOTTLE), items.getOrThrow(ItemKeys.GLASS_BOTTLE)) + .pattern("##") + .pattern("##") + .build() + ); + provider.accept( + Identifier.ofVanilla("sugar_from_honey_bottle"), + shapelessRecipe(RecipeCategory.MISC, items.getOrThrow(ItemKeys.SUGAR), 3) + .input(items.getOrThrow(ItemKeys.HONEY_BOTTLE), 1, items.getOrThrow(ItemKeys.GLASS_BOTTLE)) + .build() + ); + provider.accept( + Identifier.ofVanilla("cake"), + shapedRecipe(RecipeCategory.FOOD, items.getOrThrow(ItemKeys.CAKE)) + .input('A', items.getOrThrow(ItemKeys.MILK_BUCKET), items.getOrThrow(ItemKeys.BUCKET)) + .input('B', items.getOrThrow(ItemKeys.SUGAR)) + .input('C', items.getOrThrow(ItemKeys.WHEAT)) + .input('E', items.getOrThrow(ItemKeys.EGG)) + .pattern("AAA") + .pattern("BEB") + .pattern("CCC") + .build() + ); provider.accept(Identifier.ofVanilla("shulker_box_coloring_black"), colorShulkerBox( DyeColor.BLACK, - items.getOrThrow(ItemKeys.BLACK_SHULKER_BOX) + items.getOrThrow(ItemKeys.BLACK_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_blue"), colorShulkerBox( DyeColor.BLUE, - items.getOrThrow(ItemKeys.BLUE_SHULKER_BOX) + items.getOrThrow(ItemKeys.BLUE_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_brown"), colorShulkerBox( DyeColor.BROWN, - items.getOrThrow(ItemKeys.BROWN_SHULKER_BOX) + items.getOrThrow(ItemKeys.BROWN_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_cyan"), colorShulkerBox( DyeColor.CYAN, - items.getOrThrow(ItemKeys.CYAN_SHULKER_BOX) + items.getOrThrow(ItemKeys.CYAN_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_gray"), colorShulkerBox( DyeColor.GRAY, - items.getOrThrow(ItemKeys.GRAY_SHULKER_BOX) + items.getOrThrow(ItemKeys.GRAY_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_green"), colorShulkerBox( DyeColor.GREEN, - items.getOrThrow(ItemKeys.GREEN_SHULKER_BOX) + items.getOrThrow(ItemKeys.GREEN_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_light_blue"), colorShulkerBox( DyeColor.LIGHT_BLUE, - items.getOrThrow(ItemKeys.LIGHT_BLUE_SHULKER_BOX) + items.getOrThrow(ItemKeys.LIGHT_BLUE_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_light_gray"), colorShulkerBox( DyeColor.LIGHT_GRAY, - items.getOrThrow(ItemKeys.LIGHT_GRAY_SHULKER_BOX) + items.getOrThrow(ItemKeys.LIGHT_GRAY_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_lime"), colorShulkerBox( DyeColor.LIME, - items.getOrThrow(ItemKeys.LIME_SHULKER_BOX) + items.getOrThrow(ItemKeys.LIME_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_magenta"), colorShulkerBox( DyeColor.MAGENTA, - items.getOrThrow(ItemKeys.MAGENTA_SHULKER_BOX) + items.getOrThrow(ItemKeys.MAGENTA_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_orange"), colorShulkerBox( DyeColor.ORANGE, - items.getOrThrow(ItemKeys.ORANGE_SHULKER_BOX) + items.getOrThrow(ItemKeys.ORANGE_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_pink"), colorShulkerBox( DyeColor.PINK, - items.getOrThrow(ItemKeys.PINK_SHULKER_BOX) + items.getOrThrow(ItemKeys.PINK_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_purple"), colorShulkerBox( DyeColor.PURPLE, - items.getOrThrow(ItemKeys.PURPLE_SHULKER_BOX) + items.getOrThrow(ItemKeys.PURPLE_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_red"), colorShulkerBox( DyeColor.RED, - items.getOrThrow(ItemKeys.RED_SHULKER_BOX) + items.getOrThrow(ItemKeys.RED_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_white"), colorShulkerBox( DyeColor.WHITE, - items.getOrThrow(ItemKeys.WHITE_SHULKER_BOX) + items.getOrThrow(ItemKeys.WHITE_SHULKER_BOX), + items )); provider.accept(Identifier.ofVanilla("shulker_box_coloring_yellow"), colorShulkerBox( DyeColor.YELLOW, - items.getOrThrow(ItemKeys.YELLOW_SHULKER_BOX) + items.getOrThrow(ItemKeys.YELLOW_SHULKER_BOX), + items )); } @@ -99,7 +157,101 @@ public String getName() { return "Recipes"; } - private static ItemColoringRecipe colorShulkerBox(DyeColor color, RegistryEntry result) { - return new ItemColoringRecipe(CraftingRecipeCategory.MISC, Ingredient.fromTag(ItematicItemTags.SHULKER_BOXES), color, new ItemStack(result)); + private static ItemColoringRecipe colorShulkerBox(DyeColor color, RegistryEntry result, RegistryEntryLookup items) { + return new ItemColoringRecipe(CraftingRecipeCategory.MISC, Ingredient.fromTag(items.getOrThrow(ItematicItemTags.SHULKER_BOXES)), color, new ItemStack(result)); + } + + private static ShapelessRecipeBuilder shapelessRecipe(RecipeCategory category, RegistryEntry result) { + return new ShapelessRecipeBuilder(new ItemStack(result), category); + } + + private static ShapelessRecipeBuilder shapelessRecipe(RecipeCategory category, RegistryEntry result, int count) { + return new ShapelessRecipeBuilder(new ItemStack(result, count), category); + } + + private static ShapedRecipeBuilder shapedRecipe(RecipeCategory category, RegistryEntry result) { + return new ShapedRecipeBuilder(new ItemStack(result), category); + } + + private static class ShapelessRecipeBuilder { + private final ItemStack result; + private final RecipeCategory category; + private final List inputs = new ArrayList<>(); + + private ShapelessRecipeBuilder(ItemStack result, RecipeCategory category) { + this.result = result; + this.category = category; + } + + public ShapelessRecipe build() { + return new ShapelessRecipe( + "", + CraftingRecipeJsonBuilder.toCraftingCategory(this.category), + this.result, + this.inputs + ); + } + + public ShapelessRecipeBuilder input(RegistryEntry input) { + this.inputs.add(Ingredient.fromTag(RegistryEntryList.of(input))); + return this; + } + + public ShapelessRecipeBuilder input(RegistryEntry input, int count) { + for (int i = 0; i < count; i++) { + this.inputs.add(Ingredient.fromTag(RegistryEntryList.of(input))); + } + return this; + + } + + public ShapelessRecipeBuilder input(RegistryEntry input, int count, RegistryEntry remainder) { + for (int i = 0; i < count; i++) { + Ingredient ingredient = Ingredient.fromTag(RegistryEntryList.of(input)); + ingredient.itematic$setRemainder(Optional.of(new ItemStack(remainder))); + this.inputs.add(ingredient); + } + + return this; + } + } + + private static class ShapedRecipeBuilder { + private final ItemStack result; + private final RecipeCategory category; + private final Char2ObjectMap inputs = new Char2ObjectOpenHashMap<>(); + private final List pattern = new ArrayList<>(); + + private ShapedRecipeBuilder(ItemStack result, RecipeCategory category) { + this.result = result; + this.category = category; + } + + public ShapedRecipe build() { + return new ShapedRecipe( + "", + CraftingRecipeJsonBuilder.toCraftingCategory(this.category), + RawShapedRecipe.create(this.inputs, this.pattern), + this.result, + true + ); + } + + public ShapedRecipeBuilder input(char key, RegistryEntry input) { + this.inputs.put(key, Ingredient.fromTag(RegistryEntryList.of(input))); + return this; + } + + public ShapedRecipeBuilder input(char key, RegistryEntry input, RegistryEntry remainder) { + Ingredient ingredient = Ingredient.fromTag(RegistryEntryList.of(input)); + ingredient.itematic$setRemainder(Optional.of(new ItemStack(remainder))); + this.inputs.put(key, ingredient); + return this; + } + + public ShapedRecipeBuilder pattern(String pattern) { + this.pattern.add(pattern); + return this; + } } } diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/tag/EntityTypeTagProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/tag/EntityTypeTagProvider.java deleted file mode 100644 index 10c97744..00000000 --- a/src/datagen/java/net/errorcraft/itematic/data/server/tag/EntityTypeTagProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.errorcraft.itematic.data.server.tag; - -import net.errorcraft.itematic.entity.EntityTypeKeys; -import net.errorcraft.itematic.entity.ItematicEntityTypeTags; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; -import net.minecraft.entity.EntityType; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; - -import java.util.concurrent.CompletableFuture; - -public class EntityTypeTagProvider extends FabricTagProvider> { - public EntityTypeTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { - super(output, RegistryKeys.ENTITY_TYPE, registriesFuture); - } - - @Override - protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { - this.getOrCreateTagBuilder(ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS) - .add(EntityTypeKeys.PIGLIN) - .add(EntityTypeKeys.PIGLIN_BRUTE) - .add(EntityTypeKeys.ZOMBIFIED_PIGLIN); - } -} diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java index ff998a9e..fb26e205 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java @@ -32,26 +32,6 @@ protected void configure(RegistryWrapper.WrapperLookup arg) { .add(ItemKeys.NETHERITE_INGOT); this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_TURTLE_ARMOR) .add(ItemKeys.TURTLE_SCUTE); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_ELYTRA) - .add(ItemKeys.PHANTOM_MEMBRANE); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_WOODEN_TOOL) - .forceAddTag(ItemTags.PLANKS); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_STONE_TOOL) - .forceAddTag(ItemTags.STONE_TOOL_MATERIALS); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_GOLDEN_TOOL) - .add(ItemKeys.GOLD_INGOT); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_IRON_TOOL) - .add(ItemKeys.IRON_INGOT); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_DIAMOND_TOOL) - .add(ItemKeys.DIAMOND); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_NETHERITE_TOOL) - .add(ItemKeys.NETHERITE_INGOT); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_MACE) - .add(ItemKeys.BREEZE_ROD); - this.getOrCreateTagBuilder(ItematicItemTags.REPAIRS_SHIELD) - .forceAddTag(ItemTags.PLANKS); - this.getOrCreateTagBuilder(ItematicItemTags.FURNACE_MINECART_FUEL) - .add(ItemKeys.COAL, ItemKeys.CHARCOAL); this.getOrCreateTagBuilder(ItematicItemTags.BOW_AMMUNITION) .forceAddTag(ItemTags.ARROWS); this.getOrCreateTagBuilder(ItematicItemTags.CROSSBOW_AMMUNITION) @@ -1305,6 +1285,8 @@ protected void configure(RegistryWrapper.WrapperLookup arg) { .add(ItemKeys.TURTLE_HELMET) .add(ItemKeys.PHANTOM_MEMBRANE); this.getOrCreateTagBuilder(ItematicItemTags.BANNER_PATTERNS) + .add(ItemKeys.FIELD_MASONED_BANNER_PATTERN) + .add(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN) .add(ItemKeys.FLOWER_BANNER_PATTERN) .add(ItemKeys.CREEPER_BANNER_PATTERN) .add(ItemKeys.SKULL_BANNER_PATTERN) diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java b/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java index 76275396..1f02a276 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java @@ -9,6 +9,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -85,7 +86,7 @@ public static T createEntity(TestContext context, EntityType< } public static T createEntityAt(TestContext context, EntityType type, BlockPos pos, Consumer initializer) { - T entity = type.create(context.getWorld()); + T entity = type.create(context.getWorld(), SpawnReason.COMMAND); if (entity == null) { throw new GameTestException("Entity is null"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java new file mode 100644 index 00000000..787390df --- /dev/null +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java @@ -0,0 +1,160 @@ +package net.errorcraft.itematic.gametest.block; + +import net.errorcraft.itematic.component.PotionContentsComponentUtil; +import net.errorcraft.itematic.gametest.Assert; +import net.errorcraft.itematic.gametest.TestUtil; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potions; +import net.minecraft.screen.BrewingStandScreenHandler; +import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.test.GameTest; +import net.minecraft.test.TestContext; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.GameMode; + +public class BrewingStandBlockTestSuite { + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingWaterBottleWithNetherWartTurnsItIntoAwkwardPotion(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.POTION), Potions.WATER)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.NETHER_WART)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.POTION); + Assert.itemStackHasPotion(resultPotion, Potions.AWKWARD); + } + ) + .completeIfSuccessful(); + } + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingAwkwardPotionWithSugarTurnsItIntoSwiftnessPotion(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.POTION), Potions.AWKWARD)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.SUGAR)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.POTION); + Assert.itemStackHasPotion(resultPotion, Potions.SWIFTNESS); + } + ) + .completeIfSuccessful(); + } + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingSwiftnessPotionWithGlowstoneDustTurnsItIntoStrongSwiftnessPotion(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.POTION), Potions.SWIFTNESS)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.GLOWSTONE_DUST)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.POTION); + Assert.itemStackHasPotion(resultPotion, Potions.STRONG_SWIFTNESS); + } + ) + .completeIfSuccessful(); + } + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingSwiftnessPotionWithRedstoneTurnsItIntoLongSwiftnessPotion(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.POTION), Potions.SWIFTNESS)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.REDSTONE)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.POTION); + Assert.itemStackHasPotion(resultPotion, Potions.LONG_SWIFTNESS); + } + ) + .completeIfSuccessful(); + } + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingSwiftnessPotionWithGunpowderTurnsItIntoSwiftnessSplashPotion(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.POTION), Potions.SWIFTNESS)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.GUNPOWDER)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.SPLASH_POTION); + Assert.itemStackHasPotion(resultPotion, Potions.SWIFTNESS); + } + ) + .completeIfSuccessful(); + } + + @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) + public void brewingSwiftnessSplashPotionWithDragonBreathTurnsItIntoSwiftnessLingeringPotionAndLeavesGlassBottle(TestContext context) { + ServerWorld world = context.getWorld(); + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + BrewingStandScreenHandler brewingStandMenu = TestUtil.getMenuFromBlock(context, BLOCK_POSITION, player, ScreenHandlerType.BREWING_STAND); + brewingStandMenu.getSlot(0) + .setStack(PotionContentsComponentUtil.setPotion(world.itematic$createStack(ItemKeys.SPLASH_POTION), Potions.SWIFTNESS)); + brewingStandMenu.getSlot(3) + .setStack(world.itematic$createStack(ItemKeys.DRAGON_BREATH)); + brewingStandMenu.getSlot(4) + .setStack(world.itematic$createStack(ItemKeys.BLAZE_POWDER)); + context.createTimedTaskRunner() + .expectMinDurationAndRun( + 401, + () -> { + ItemStack resultPotion = brewingStandMenu.getSlot(0).getStack(); + Assert.itemStackIsOf(resultPotion, ItemKeys.LINGERING_POTION); + Assert.itemStackHasPotion(resultPotion, Potions.SWIFTNESS); + ItemStack ingredientRemainder = brewingStandMenu.getSlot(3).getStack(); + Assert.itemStackIsOf(ingredientRemainder, ItemKeys.GLASS_BOTTLE); + } + ) + .completeIfSuccessful(); + } +} diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/FishingRodTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/FishingRodTestSuite.java index 2879d679..7698b8d8 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/FishingRodTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/FishingRodTestSuite.java @@ -28,7 +28,7 @@ public void usingCastFishingRodRetractsFishingRod(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.FISHING_ROD); player.setStackInHand(Hand.MAIN_HAND, stack); - world.spawnEntity(new FishingBobberEntity(player, world, 0, 0)); + world.spawnEntity(new FishingBobberEntity(player, world, 0, 0, stack)); stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> context.assertTrue(player.fishHook == null, "Expected player to have retracted a fishing rod")); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java index 2b58b687..4359a7a1 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java @@ -25,10 +25,12 @@ public void consumingHoneyBottleRemovesPoisonStatusEffect(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.HONEY_BOTTLE); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - stack.use(world, player, Hand.MAIN_HAND); - context.createTimedTaskRunner().expectMinDurationAndRun( - TestUtil.getDataComponent(stack, ItematicDataComponentTypes.USE_DURATION).ticks(stack, player), - () -> Assert.entityDoesNotHaveStatusEffect(player, StatusEffects.POISON) - ).completeIfSuccessful(); + context.createTimedTaskRunner() + .createAndAddReported(() -> stack.use(world, player, Hand.MAIN_HAND)) + .expectMinDurationAndRun( + TestUtil.getDataComponent(stack, ItematicDataComponentTypes.USE_DURATION).ticks(stack, player), + () -> Assert.entityDoesNotHaveStatusEffect(player, StatusEffects.POISON) + ) + .completeIfSuccessful(); } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java index df37465b..75900e2b 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java @@ -11,7 +11,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.server.world.ServerWorld; import net.minecraft.test.GameTest; +import net.minecraft.test.GameTestException; import net.minecraft.test.TestContext; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.GameMode; @@ -45,10 +47,14 @@ public void usingItemWithAlreadyEquippedStackSwapsStacks(TestContext context) { player.equipStack(EquipmentSlot.HEAD, world.itematic$createStack(ItemKeys.IRON_HELMET)); ItemStack stack = world.itematic$createStack(ItemKeys.LEATHER_HELMET); player.setStackInHand(Hand.MAIN_HAND, stack); - ItemStack resultStack = stack.use(world, player, Hand.MAIN_HAND).getValue(); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { + if (!(result instanceof ActionResult.Success successResult)) { + throw new GameTestException("Expected equipment usage to be successful"); + } + Assert.itemStackIsOf(player.getEquippedStack(EquipmentSlot.HEAD), ItemKeys.LEATHER_HELMET); - Assert.itemStackIsOf(resultStack, ItemKeys.IRON_HELMET); + Assert.itemStackIsOf(successResult.getNewHandStack(), ItemKeys.IRON_HELMET); }); } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/MappableItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/MappableItemComponentTestSuite.java index 92c83ec4..c2b52190 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/MappableItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/MappableItemComponentTestSuite.java @@ -8,7 +8,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.server.world.ServerWorld; import net.minecraft.test.GameTest; +import net.minecraft.test.GameTestException; import net.minecraft.test.TestContext; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.GameMode; @@ -20,8 +22,13 @@ public void usingMapFillsMap(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.MAP); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - ItemStack resultStack = stack.use(world, player, Hand.MAIN_HAND).getValue(); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { + if (!(result instanceof ActionResult.Success successResult)) { + throw new GameTestException("Expected mappable usage to be successful"); + } + + ItemStack resultStack = successResult.getNewHandStack(); Assert.itemStackIsOf(resultStack, ItemKeys.FILLED_MAP); Assert.itemStackHasDataComponent(resultStack, DataComponentTypes.MAP_ID); }); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java index c6489438..d54cbf49 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java @@ -11,8 +11,8 @@ import net.minecraft.test.GameTest; import net.minecraft.test.GameTestException; import net.minecraft.test.TestContext; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.GameMode; @@ -26,9 +26,9 @@ public void throwingEggSpawnsEggAtEyePosition(TestContext context) { PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Egg usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Egg usage to be successful"); context.expectEntityAt(EntityType.EGG, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -40,9 +40,9 @@ public void throwingEnderPearlSpawnsEnderPearlAtEyePosition(TestContext context) PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Ender Pearl usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Ender Pearl usage to be successful"); context.expectEntityAt(EntityType.ENDER_PEARL, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -54,9 +54,9 @@ public void throwingSnowballSpawnsSnowballAtEyePosition(TestContext context) { PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Snowball usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Snowball usage to be successful"); context.expectEntityAt(EntityType.SNOWBALL, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -68,9 +68,9 @@ public void throwingExperienceBottleSpawnsExperienceBottleAtEyePosition(TestCont PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Experience Bottle usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Experience Bottle usage to be successful"); context.expectEntityAt(EntityType.EXPERIENCE_BOTTLE, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -82,9 +82,9 @@ public void throwingSplashPotionSpawnsPotionAtEyePosition(TestContext context) { PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Splash Potion usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Splash Potion usage to be successful"); context.expectEntityAt(EntityType.POTION, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -96,9 +96,9 @@ public void throwingLingeringPotionSpawnsPotionAtEyePosition(TestContext context PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Lingering Potion usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Lingering Potion usage to be successful"); context.expectEntityAt(EntityType.POTION, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); }); } @@ -114,8 +114,8 @@ public void throwingTridentSpawnsTridentAtEyePosition(TestContext context) { PlayerEntity player = TestUtil.createMockPlayer(context, GameMode.SURVIVAL, SPAWN_POSITION); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); - context.assertTrue(result.getResult().isAccepted(), "Expected Trident usage to be successful"); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); + context.assertTrue(result.isAccepted(), "Expected Trident usage to be successful"); context.runAtTick(minDrawDuration, () -> context.addFinalTask(() -> { stack.onStoppedUsing(world, player, player.getItemUseTimeLeft()); context.expectEntityAt(EntityType.TRIDENT, SPAWN_POSITION.add(0, (int)player.getStandingEyeHeight(), 0)); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java index 9bee43db..6a9f1df0 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java @@ -10,8 +10,8 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.test.GameTest; import net.minecraft.test.TestContext; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; @@ -35,9 +35,9 @@ public void usingLilyPadWhileLookingAtWaterPlacesLilyPad(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.LILY_PAD); player.setStackInHand(Hand.MAIN_HAND, stack); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Lily Pad usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Lily Pad usage to be successful"); context.expectBlock(Blocks.LILY_PAD, ABOVE_LOOK_AT_WATER_POSITION_ON_LAND); }); } @@ -50,9 +50,9 @@ public void usingPigSpawnEggWhileLookingAtWaterSpawnsPigAtWater(TestContext cont ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.PIG_SPAWN_EGG); player.setStackInHand(Hand.MAIN_HAND, stack); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Pig Spawn Egg usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Pig Spawn Egg usage to be successful"); context.expectEntityAt(EntityType.PIG, LOOK_AT_WATER_POSITION_ON_LAND); }); } @@ -65,9 +65,9 @@ public void usingPigSpawnEggWhileLookingAtAirDoesNotSpawnPig(TestContext context ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.PIG_SPAWN_EGG); player.setStackInHand(Hand.MAIN_HAND, stack); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { - context.assertFalse(result.getResult().isAccepted(), "Expected Pig Spawn Egg usage to be unsuccessful"); + context.assertFalse(result.isAccepted(), "Expected Pig Spawn Egg usage to be unsuccessful"); context.dontExpectEntity(EntityType.PIG); }); } @@ -92,9 +92,9 @@ public void usingPigSpawnEggWhileLookingAtWaterUnderWaterSpawnsPigAtPlayerEyes(T ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.PIG_SPAWN_EGG); player.setStackInHand(Hand.MAIN_HAND, stack); - TypedActionResult result = stack.use(world, player, Hand.MAIN_HAND); + ActionResult result = stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> { - context.assertTrue(result.getResult().isAccepted(), "Expected Pig Spawn Egg usage to be successful"); + context.assertTrue(result.isAccepted(), "Expected Pig Spawn Egg usage to be successful"); BlockPos eyeBlockPos = SPAWN_POSITION_IN_WATER.add(0, (int) player.getStandingEyeHeight(), 0); context.expectEntityAt(EntityType.PIG, eyeBlockPos); }); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java index 70ec90a4..8d9a5086 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java @@ -31,14 +31,14 @@ public void zombieAttackingUnarmedDealsDamageFromTrueBaseValueAttackDamageAttrib context.assertTrue(zombie.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.GENERIC_ATTACK_DAMAGE), + MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) - public void zombieAttackingWithIronSwordDealsDamageFromIronSword(TestContext context) { + public void zombieAttackingWithIronSwordDealsCorrectDamage(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.IRON_SWORD); ZombieEntity zombie = TestUtil.createEntity(context, EntityType.ZOMBIE, entity -> entity.setStackInHand(Hand.MAIN_HAND, stack)); @@ -48,14 +48,14 @@ public void zombieAttackingWithIronSwordDealsDamageFromIronSword(TestContext con context.assertTrue(zombie.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), + MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) - public void piglinAttackingWithIronSwordDealsDamageFromIronSword(TestContext context) { + public void piglinAttackingWithIronSwordDealsCorrectDamage(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.IRON_SWORD); PiglinEntity piglin = TestUtil.createEntity(context, EntityType.PIGLIN, entity -> entity.setStackInHand(Hand.MAIN_HAND, stack)); @@ -65,14 +65,14 @@ public void piglinAttackingWithIronSwordDealsDamageFromIronSword(TestContext con context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), + MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) - public void piglinAttackingWithGoldenSwordDealsDamageFromTrueBaseValueAttackDamageAttributeAndGoldenSword(TestContext context) { + public void piglinAttackingWithGoldenSwordDealsCorrectDamage(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.GOLDEN_SWORD); PiglinEntity piglin = TestUtil.createEntity(context, EntityType.PIGLIN, entity -> entity.setStackInHand(Hand.MAIN_HAND, stack)); @@ -82,7 +82,7 @@ public void piglinAttackingWithGoldenSwordDealsDamageFromTrueBaseValueAttackDama context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.GENERIC_ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().rules().getFirst().damage().orElseThrow(), + MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); @@ -90,7 +90,7 @@ public void piglinAttackingWithGoldenSwordDealsDamageFromTrueBaseValueAttackDama private static PigEntity spawnVictim(TestContext context) { PigEntity victim = TestUtil.createEntity(context, EntityType.PIG, entity -> { - Objects.requireNonNull(entity.getAttributes().getCustomInstance(EntityAttributes.GENERIC_MAX_HEALTH)) + Objects.requireNonNull(entity.getAttributes().getCustomInstance(EntityAttributes.MAX_HEALTH)) .setBaseValue(MAX_HEALTH_VICTIM); entity.setHealth((float) MAX_HEALTH_VICTIM); }); diff --git a/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java b/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java deleted file mode 100644 index 8eb6b932..00000000 --- a/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.errorcraft.itematic.mixin.gametest; - -import net.minecraft.resource.featuretoggle.FeatureFlags; -import net.minecraft.resource.featuretoggle.FeatureManager; -import net.minecraft.resource.featuretoggle.FeatureSet; -import net.minecraft.test.TestServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(TestServer.class) -public class TestServerExtender { - @Redirect( - method = "create", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/resource/featuretoggle/FeatureManager;getFeatureSet()Lnet/minecraft/resource/featuretoggle/FeatureSet;" - ) - ) - private static FeatureSet doNotUseExperimentalFeatures(FeatureManager instance) { - return FeatureFlags.VANILLA_FEATURES; - } - - @ModifyArg( - method = "create", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/server/SaveLoading$DataPacks;(Lnet/minecraft/resource/ResourcePackManager;Lnet/minecraft/resource/DataConfiguration;ZZ)V" - ), - index = 3 - ) - private static boolean doNotUseExperimentalFeatures(boolean initMode) { - return false; - } -} diff --git a/src/gametest/resources/data/itematic/gametest/structure/block.brewing_stand.snbt b/src/gametest/resources/data/itematic/gametest/structure/block.brewing_stand.snbt new file mode 100644 index 00000000..7ead1d0a --- /dev/null +++ b/src/gametest/resources/data/itematic/gametest/structure/block.brewing_stand.snbt @@ -0,0 +1,39 @@ +{ + DataVersion: 4060, + size: [3, 3, 3], + data: [ + {pos: [0, 0, 0], state: "minecraft:bedrock"}, + {pos: [0, 0, 1], state: "minecraft:bedrock"}, + {pos: [0, 0, 2], state: "minecraft:bedrock"}, + {pos: [1, 0, 0], state: "minecraft:bedrock"}, + {pos: [1, 0, 1], state: "minecraft:bedrock"}, + {pos: [1, 0, 2], state: "minecraft:bedrock"}, + {pos: [2, 0, 0], state: "minecraft:bedrock"}, + {pos: [2, 0, 1], state: "minecraft:bedrock"}, + {pos: [2, 0, 2], state: "minecraft:bedrock"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:brewing_stand{has_bottle_0:false,has_bottle_1:false,has_bottle_2:false}", nbt: {BrewTime: 0s, Fuel: 0b, Items: [], id: "minecraft:brewing_stand"}}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "minecraft:air"}, + {pos: [2, 1, 2], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:bedrock", + "minecraft:air", + "minecraft:brewing_stand{has_bottle_0:false,has_bottle_1:false,has_bottle_2:false}" + ] +} diff --git a/src/gametest/resources/fabric.mod.json b/src/gametest/resources/fabric.mod.json index 40887825..d267f031 100644 --- a/src/gametest/resources/fabric.mod.json +++ b/src/gametest/resources/fabric.mod.json @@ -9,6 +9,7 @@ "fabric-gametest": [ "net.errorcraft.itematic.gametest.block.AnvilBlockTestSuite", "net.errorcraft.itematic.gametest.block.BeehiveBlockTestSuite", + "net.errorcraft.itematic.gametest.block.BrewingStandBlockTestSuite", "net.errorcraft.itematic.gametest.block.CandleBlockTestSuite", "net.errorcraft.itematic.gametest.block.ComposterBlockTestSuite", "net.errorcraft.itematic.gametest.block.DispenserBehaviorTestSuite", diff --git a/src/gametest/resources/itematic-gametest.mixins.json b/src/gametest/resources/itematic-gametest.mixins.json index 23487eb3..2af60b5a 100644 --- a/src/gametest/resources/itematic-gametest.mixins.json +++ b/src/gametest/resources/itematic-gametest.mixins.json @@ -9,8 +9,7 @@ "mixins": [ "GameTestStateExtender", "StructureTestListenerExtender", - "TestContextExtender", - "TestServerExtender" + "TestContextExtender" ], "injectors": { "defaultRequire": 1 diff --git a/src/main/generated/assets/minecraft/item_bar_style/bundle.json b/src/main/generated/assets/minecraft/item_bar_style/bundle.json index 5a6eda4f..49cc3695 100644 --- a/src/main/generated/assets/minecraft/item_bar_style/bundle.json +++ b/src/main/generated/assets/minecraft/item_bar_style/bundle.json @@ -1,7 +1,7 @@ { "color": { "type": "minecraft:constant", - "color": 6711039 + "color": -9402369 }, "progress": "minecraft:item_holder_occupancy", "textures": [ diff --git a/src/main/generated/data/minecraft/item/allay_spawn_egg.json b/src/main/generated/data/minecraft/item/allay_spawn_egg.json index b3453567..5038da96 100644 --- a/src/main/generated/data/minecraft/item/allay_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/allay_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:allay" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 44543 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/angler_pottery_sherd.json b/src/main/generated/data/minecraft/item/angler_pottery_sherd.json index 4472959e..a4e13ca4 100644 --- a/src/main/generated/data/minecraft/item/angler_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/angler_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.angler_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/archer_pottery_sherd.json b/src/main/generated/data/minecraft/item/archer_pottery_sherd.json index a7884fe2..6eb9d809 100644 --- a/src/main/generated/data/minecraft/item/archer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/archer_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.archer_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json b/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json index 73a6405e..3fcc8b0e 100644 --- a/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:armadillo" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8538184 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json b/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json index 75ba425b..7534f0de 100644 --- a/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.arms_up_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json b/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json index 777419d2..e3acddcd 100644 --- a/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:axolotl" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 10890612 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bat_spawn_egg.json b/src/main/generated/data/minecraft/item/bat_spawn_egg.json index 89cfc5f8..e8b2cf7b 100644 --- a/src/main/generated/data/minecraft/item/bat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bat_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:bat" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 986895 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bee_spawn_egg.json b/src/main/generated/data/minecraft/item/bee_spawn_egg.json index d47eb346..580436c2 100644 --- a/src/main/generated/data/minecraft/item/bee_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bee_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:bee" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 4400155 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beetroot_soup.json b/src/main/generated/data/minecraft/item/beetroot_soup.json index 096d3761..2f8adb23 100644 --- a/src/main/generated/data/minecraft/item/beetroot_soup.json +++ b/src/main/generated/data/minecraft/item/beetroot_soup.json @@ -3,9 +3,7 @@ "translation_key": "item.minecraft.beetroot_soup" }, "components": { - "minecraft:consumable": { - "result_item": "minecraft:bowl" - }, + "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, "saturation": 7.2000003 @@ -13,6 +11,10 @@ "minecraft:stackable": 1, "minecraft:useable": { "animation": "eat", + "remainder": { + "id": "minecraft:bowl", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 diff --git a/src/main/generated/data/minecraft/item/blade_pottery_sherd.json b/src/main/generated/data/minecraft/item/blade_pottery_sherd.json index ca4e68fb..f138b52a 100644 --- a/src/main/generated/data/minecraft/item/blade_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/blade_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.blade_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/blaze_spawn_egg.json b/src/main/generated/data/minecraft/item/blaze_spawn_egg.json index 7e6df0d4..7d20e06e 100644 --- a/src/main/generated/data/minecraft/item/blaze_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/blaze_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:blaze" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16775294 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bogged_spawn_egg.json b/src/main/generated/data/minecraft/item/bogged_spawn_egg.json index 03d6d1ea..cbe240c8 100644 --- a/src/main/generated/data/minecraft/item/bogged_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bogged_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:bogged" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 3231003 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json index d765acb7..f2a0dc6c 100644 --- a/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.bolt_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json b/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json new file mode 100644 index 00000000..b015555f --- /dev/null +++ b/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json @@ -0,0 +1,12 @@ +{ + "base": { + "rarity": "rare", + "translation_key": "item.minecraft.bordure_indented_banner_pattern" + }, + "components": { + "minecraft:banner_pattern": { + "patterns": "minecraft:pattern_item/bordure_indented" + }, + "minecraft:stackable": 1 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/breeze_spawn_egg.json b/src/main/generated/data/minecraft/item/breeze_spawn_egg.json index ca624de9..4aeec6a5 100644 --- a/src/main/generated/data/minecraft/item/breeze_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/breeze_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:breeze" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 9529055 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json b/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json index 8b19b089..0e57fe50 100644 --- a/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.brewer_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/burn_pottery_sherd.json b/src/main/generated/data/minecraft/item/burn_pottery_sherd.json index 830aedc4..83c58f7d 100644 --- a/src/main/generated/data/minecraft/item/burn_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/burn_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.burn_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/camel_spawn_egg.json b/src/main/generated/data/minecraft/item/camel_spawn_egg.json index 986f1ad8..40701bd9 100644 --- a/src/main/generated/data/minecraft/item/camel_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/camel_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:camel" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 13341495 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cat_spawn_egg.json b/src/main/generated/data/minecraft/item/cat_spawn_egg.json index c1fd6965..d6ef32a8 100644 --- a/src/main/generated/data/minecraft/item/cat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cat_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:cat" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 9794134 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json b/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json index 23b818e6..265a3377 100644 --- a/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:cave_spider" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 11013646 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chainmail_boots.json b/src/main/generated/data/minecraft/item/chainmail_boots.json index 804356df..63a40387 100644 --- a/src/main/generated/data/minecraft/item/chainmail_boots.json +++ b/src/main/generated/data/minecraft/item/chainmail_boots.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.chainmail_boots" }, "components": { @@ -21,7 +22,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_chainmail_armor" + "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/chainmail_chestplate.json b/src/main/generated/data/minecraft/item/chainmail_chestplate.json index 520fcc5f..2c591004 100644 --- a/src/main/generated/data/minecraft/item/chainmail_chestplate.json +++ b/src/main/generated/data/minecraft/item/chainmail_chestplate.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.chainmail_chestplate" }, "components": { @@ -21,7 +22,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_chainmail_armor" + "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/chainmail_helmet.json b/src/main/generated/data/minecraft/item/chainmail_helmet.json index 1998528c..b3da8666 100644 --- a/src/main/generated/data/minecraft/item/chainmail_helmet.json +++ b/src/main/generated/data/minecraft/item/chainmail_helmet.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.chainmail_helmet" }, "components": { @@ -21,7 +22,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_chainmail_armor" + "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/chainmail_leggings.json b/src/main/generated/data/minecraft/item/chainmail_leggings.json index a9bf7884..8b834e0d 100644 --- a/src/main/generated/data/minecraft/item/chainmail_leggings.json +++ b/src/main/generated/data/minecraft/item/chainmail_leggings.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.chainmail_leggings" }, "components": { @@ -21,7 +22,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_chainmail_armor" + "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/chicken.json b/src/main/generated/data/minecraft/item/chicken.json index 28f7872c..fa58bd30 100644 --- a/src/main/generated/data/minecraft/item/chicken.json +++ b/src/main/generated/data/minecraft/item/chicken.json @@ -5,16 +5,6 @@ "components": { "minecraft:consumable": {}, "minecraft:food": { - "effects": [ - { - "effect": { - "id": "minecraft:hunger", - "duration": 600, - "show_icon": true - }, - "probability": 0.3 - } - ], "nutrition": 2, "saturation": 1.2 }, @@ -26,5 +16,30 @@ "amount": 32 } } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:poison", + "duration": 600, + "show_icon": true + } + ], + "entity": "this" + }, + "requirements": { + "conditions": { + "chance": 0.3, + "condition": "minecraft:random_chance" + }, + "context": { + "entity": "this", + "position": "this" + } + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chicken_spawn_egg.json b/src/main/generated/data/minecraft/item/chicken_spawn_egg.json index 6395345b..a9c28e0d 100644 --- a/src/main/generated/data/minecraft/item/chicken_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/chicken_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:chicken" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16711680 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json index 927a0e85..f9a42a21 100644 --- a/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.coast_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/cod_spawn_egg.json b/src/main/generated/data/minecraft/item/cod_spawn_egg.json index c98903a7..fb08ca9d 100644 --- a/src/main/generated/data/minecraft/item/cod_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cod_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:cod" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15058059 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cow_spawn_egg.json b/src/main/generated/data/minecraft/item/cow_spawn_egg.json index 64b3cb49..fc45214a 100644 --- a/src/main/generated/data/minecraft/item/cow_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cow_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:cow" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 10592673 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/creeper_banner_pattern.json b/src/main/generated/data/minecraft/item/creeper_banner_pattern.json index 6f29b93c..22419652 100644 --- a/src/main/generated/data/minecraft/item/creeper_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/creeper_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { "rarity": "uncommon", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.creeper_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.creeper_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/creeper_spawn_egg.json b/src/main/generated/data/minecraft/item/creeper_spawn_egg.json index 1effb8f0..be2e1f76 100644 --- a/src/main/generated/data/minecraft/item/creeper_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/creeper_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:creeper" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 0 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/danger_pottery_sherd.json b/src/main/generated/data/minecraft/item/danger_pottery_sherd.json index a3a814e5..4fa5a2e7 100644 --- a/src/main/generated/data/minecraft/item/danger_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/danger_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.danger_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/diamond_axe.json b/src/main/generated/data/minecraft/item/diamond_axe.json index 9c5c33b4..aed28271 100644 --- a/src/main/generated/data/minecraft/item/diamond_axe.json +++ b/src/main/generated/data/minecraft/item/diamond_axe.json @@ -10,7 +10,7 @@ "enchantability": 10 }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_tool" + "items": "#minecraft:diamond_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/diamond_boots.json b/src/main/generated/data/minecraft/item/diamond_boots.json index fa3ba6f1..cff0281b 100644 --- a/src/main/generated/data/minecraft/item/diamond_boots.json +++ b/src/main/generated/data/minecraft/item/diamond_boots.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_armor" + "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/diamond_chestplate.json b/src/main/generated/data/minecraft/item/diamond_chestplate.json index a542c789..ea1b0ebb 100644 --- a/src/main/generated/data/minecraft/item/diamond_chestplate.json +++ b/src/main/generated/data/minecraft/item/diamond_chestplate.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_armor" + "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/diamond_helmet.json b/src/main/generated/data/minecraft/item/diamond_helmet.json index 82a49c42..9f43b2a5 100644 --- a/src/main/generated/data/minecraft/item/diamond_helmet.json +++ b/src/main/generated/data/minecraft/item/diamond_helmet.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_armor" + "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/diamond_hoe.json b/src/main/generated/data/minecraft/item/diamond_hoe.json index d18a370d..38dd8118 100644 --- a/src/main/generated/data/minecraft/item/diamond_hoe.json +++ b/src/main/generated/data/minecraft/item/diamond_hoe.json @@ -10,7 +10,7 @@ "enchantability": 10 }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_tool" + "items": "#minecraft:diamond_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/diamond_leggings.json b/src/main/generated/data/minecraft/item/diamond_leggings.json index e440581a..c73e555e 100644 --- a/src/main/generated/data/minecraft/item/diamond_leggings.json +++ b/src/main/generated/data/minecraft/item/diamond_leggings.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_armor" + "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/diamond_pickaxe.json b/src/main/generated/data/minecraft/item/diamond_pickaxe.json index c9f6d1ef..94a71687 100644 --- a/src/main/generated/data/minecraft/item/diamond_pickaxe.json +++ b/src/main/generated/data/minecraft/item/diamond_pickaxe.json @@ -10,7 +10,7 @@ "enchantability": 10 }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_tool" + "items": "#minecraft:diamond_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/diamond_shovel.json b/src/main/generated/data/minecraft/item/diamond_shovel.json index 501ea2a7..9f5899aa 100644 --- a/src/main/generated/data/minecraft/item/diamond_shovel.json +++ b/src/main/generated/data/minecraft/item/diamond_shovel.json @@ -10,7 +10,7 @@ "enchantability": 10 }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_tool" + "items": "#minecraft:diamond_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/diamond_sword.json b/src/main/generated/data/minecraft/item/diamond_sword.json index b30b6839..be5c5e84 100644 --- a/src/main/generated/data/minecraft/item/diamond_sword.json +++ b/src/main/generated/data/minecraft/item/diamond_sword.json @@ -10,7 +10,7 @@ "enchantability": 10 }, "minecraft:repairable": { - "items": "minecraft:repairs_diamond_tool" + "items": "#minecraft:diamond_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/disc_fragment_5.json b/src/main/generated/data/minecraft/item/disc_fragment_5.json index addd0c98..c8ad8058 100644 --- a/src/main/generated/data/minecraft/item/disc_fragment_5.json +++ b/src/main/generated/data/minecraft/item/disc_fragment_5.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "tooltip": [ { "color": "gray", diff --git a/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json b/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json index c1380b75..4adb1377 100644 --- a/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:dolphin" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16382457 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/donkey_spawn_egg.json b/src/main/generated/data/minecraft/item/donkey_spawn_egg.json index f01275a6..14eec093 100644 --- a/src/main/generated/data/minecraft/item/donkey_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/donkey_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:donkey" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8811878 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dragon_breath.json b/src/main/generated/data/minecraft/item/dragon_breath.json index cbaf8f85..ae6070e5 100644 --- a/src/main/generated/data/minecraft/item/dragon_breath.json +++ b/src/main/generated/data/minecraft/item/dragon_breath.json @@ -4,9 +4,6 @@ "translation_key": "item.minecraft.dragon_breath" }, "components": { - "minecraft:recipe_remainder": { - "item": "minecraft:glass_bottle" - }, "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dragon_head.json b/src/main/generated/data/minecraft/item/dragon_head.json index 60b8ec33..68ab835f 100644 --- a/src/main/generated/data/minecraft/item/dragon_head.json +++ b/src/main/generated/data/minecraft/item/dragon_head.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "uncommon", + "rarity": "rare", "translation_key": "block.minecraft.dragon_head" }, "components": { diff --git a/src/main/generated/data/minecraft/item/drowned_spawn_egg.json b/src/main/generated/data/minecraft/item/drowned_spawn_egg.json index 9cadc700..8cc24ed2 100644 --- a/src/main/generated/data/minecraft/item/drowned_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/drowned_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:drowned" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7969893 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json index cc0dbbb7..7de1a854 100644 --- a/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.dune_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/echo_shard.json b/src/main/generated/data/minecraft/item/echo_shard.json index bab016ce..19a659af 100644 --- a/src/main/generated/data/minecraft/item/echo_shard.json +++ b/src/main/generated/data/minecraft/item/echo_shard.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.echo_shard" }, "components": { diff --git a/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json b/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json index 6b99f9bd..723e4e43 100644 --- a/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:elder_guardian" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7632531 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/elytra.json b/src/main/generated/data/minecraft/item/elytra.json index 4ad1f2ae..467445e8 100644 --- a/src/main/generated/data/minecraft/item/elytra.json +++ b/src/main/generated/data/minecraft/item/elytra.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "uncommon", + "rarity": "epic", "translation_key": "item.minecraft.elytra" }, "components": { @@ -17,7 +17,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_elytra" + "items": "minecraft:phantom_membrane" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/enchanted_golden_apple.json b/src/main/generated/data/minecraft/item/enchanted_golden_apple.json index 130d8173..a6fc2b4e 100644 --- a/src/main/generated/data/minecraft/item/enchanted_golden_apple.json +++ b/src/main/generated/data/minecraft/item/enchanted_golden_apple.json @@ -1,54 +1,53 @@ { "base": { "glint": true, - "rarity": "epic", + "rarity": "rare", "translation_key": "item.minecraft.enchanted_golden_apple" }, "components": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, - "effects": [ - { - "effect": { + "nutrition": 4, + "saturation": 9.6 + }, + "minecraft:stackable": 64, + "minecraft:useable": { + "animation": "eat", + "ticks": { + "type": "minecraft:constant", + "amount": 32 + } + } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { "id": "minecraft:regeneration", "amplifier": 1, "duration": 400, "show_icon": true - } - }, - { - "effect": { + }, + { "id": "minecraft:resistance", "duration": 6000, "show_icon": true - } - }, - { - "effect": { + }, + { "id": "minecraft:fire_resistance", "duration": 6000, "show_icon": true - } - }, - { - "effect": { + }, + { "id": "minecraft:absorption", - "amplifier": 3, "duration": 2400, "show_icon": true } - } - ], - "nutrition": 4, - "saturation": 9.6 - }, - "minecraft:stackable": 64, - "minecraft:useable": { - "animation": "eat", - "ticks": { - "type": "minecraft:constant", - "amount": 32 + ], + "entity": "this" } } } diff --git a/src/main/generated/data/minecraft/item/end_crystal.json b/src/main/generated/data/minecraft/item/end_crystal.json index 6a045fad..87bc8111 100644 --- a/src/main/generated/data/minecraft/item/end_crystal.json +++ b/src/main/generated/data/minecraft/item/end_crystal.json @@ -1,7 +1,6 @@ { "base": { "glint": true, - "rarity": "rare", "translation_key": "item.minecraft.end_crystal" }, "components": { diff --git a/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json b/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json index c9ffc3f3..98c24408 100644 --- a/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:ender_dragon" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 14711290 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/enderman_spawn_egg.json b/src/main/generated/data/minecraft/item/enderman_spawn_egg.json index 597ac26b..b17ef2a3 100644 --- a/src/main/generated/data/minecraft/item/enderman_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/enderman_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:enderman" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 0 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/endermite_spawn_egg.json b/src/main/generated/data/minecraft/item/endermite_spawn_egg.json index 7fc794a2..233816c7 100644 --- a/src/main/generated/data/minecraft/item/endermite_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/endermite_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:endermite" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7237230 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/evoker_spawn_egg.json b/src/main/generated/data/minecraft/item/evoker_spawn_egg.json index db495197..624ce2cf 100644 --- a/src/main/generated/data/minecraft/item/evoker_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/evoker_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:evoker" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 1973274 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json b/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json index 8699310c..faf56317 100644 --- a/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.explorer_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json index 1d38958b..cda2fd45 100644 --- a/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.eye_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json b/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json new file mode 100644 index 00000000..fa98ab6e --- /dev/null +++ b/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json @@ -0,0 +1,12 @@ +{ + "base": { + "rarity": "rare", + "translation_key": "item.minecraft.field_masoned_banner_pattern" + }, + "components": { + "minecraft:banner_pattern": { + "patterns": "minecraft:pattern_item/field_masoned" + }, + "minecraft:stackable": 1 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json index bc7b0670..795019d8 100644 --- a/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.flow_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/flow_banner_pattern.json b/src/main/generated/data/minecraft/item/flow_banner_pattern.json index 72af906a..499b4564 100644 --- a/src/main/generated/data/minecraft/item/flow_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/flow_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { "rarity": "rare", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.flow_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.flow_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/flow_pottery_sherd.json b/src/main/generated/data/minecraft/item/flow_pottery_sherd.json index 71d1546b..fc03a5df 100644 --- a/src/main/generated/data/minecraft/item/flow_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/flow_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.flow_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/flower_banner_pattern.json b/src/main/generated/data/minecraft/item/flower_banner_pattern.json index fe40f512..1ff49796 100644 --- a/src/main/generated/data/minecraft/item/flower_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/flower_banner_pattern.json @@ -1,11 +1,5 @@ { "base": { - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.flower_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.flower_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/fox_spawn_egg.json b/src/main/generated/data/minecraft/item/fox_spawn_egg.json index d4efdb7b..186ca6af 100644 --- a/src/main/generated/data/minecraft/item/fox_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/fox_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:fox" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 13396256 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/friend_pottery_sherd.json b/src/main/generated/data/minecraft/item/friend_pottery_sherd.json index f58c0733..8ce96b33 100644 --- a/src/main/generated/data/minecraft/item/friend_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/friend_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.friend_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/frog_spawn_egg.json b/src/main/generated/data/minecraft/item/frog_spawn_egg.json index f292ee9d..ebe0c664 100644 --- a/src/main/generated/data/minecraft/item/frog_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/frog_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:frog" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16762748 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ghast_spawn_egg.json b/src/main/generated/data/minecraft/item/ghast_spawn_egg.json index 9f9f78bf..f8c3e9f4 100644 --- a/src/main/generated/data/minecraft/item/ghast_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ghast_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:ghast" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 12369084 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/globe_banner_pattern.json b/src/main/generated/data/minecraft/item/globe_banner_pattern.json index e867272d..decdb01d 100644 --- a/src/main/generated/data/minecraft/item/globe_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/globe_banner_pattern.json @@ -1,11 +1,5 @@ { "base": { - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.globe_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.globe_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json b/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json index 0ee47e47..734801d3 100644 --- a/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:glow_squid" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8778172 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/goat_horn.json b/src/main/generated/data/minecraft/item/goat_horn.json index 860a197d..72914670 100644 --- a/src/main/generated/data/minecraft/item/goat_horn.json +++ b/src/main/generated/data/minecraft/item/goat_horn.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.goat_horn" }, "components": { diff --git a/src/main/generated/data/minecraft/item/goat_spawn_egg.json b/src/main/generated/data/minecraft/item/goat_spawn_egg.json index 92927fe6..e321a601 100644 --- a/src/main/generated/data/minecraft/item/goat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/goat_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:goat" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5589310 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_apple.json b/src/main/generated/data/minecraft/item/golden_apple.json index 07e03992..b9260f77 100644 --- a/src/main/generated/data/minecraft/item/golden_apple.json +++ b/src/main/generated/data/minecraft/item/golden_apple.json @@ -1,29 +1,11 @@ { "base": { - "rarity": "rare", "translation_key": "item.minecraft.golden_apple" }, "components": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, - "effects": [ - { - "effect": { - "id": "minecraft:regeneration", - "amplifier": 1, - "duration": 100, - "show_icon": true - } - }, - { - "effect": { - "id": "minecraft:absorption", - "duration": 2400, - "show_icon": true - } - } - ], "nutrition": 4, "saturation": 9.6 }, @@ -35,5 +17,26 @@ "amount": 32 } } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:regeneration", + "amplifier": 1, + "duration": 100, + "show_icon": true + }, + { + "id": "minecraft:absorption", + "duration": 2400, + "show_icon": true + } + ], + "entity": "this" + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_axe.json b/src/main/generated/data/minecraft/item/golden_axe.json index 438b2948..b5389a38 100644 --- a/src/main/generated/data/minecraft/item/golden_axe.json +++ b/src/main/generated/data/minecraft/item/golden_axe.json @@ -10,7 +10,7 @@ "enchantability": 22 }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_tool" + "items": "#minecraft:gold_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { @@ -29,13 +29,7 @@ "minecraft:weapon": { "attack_damage": { "default_damage": 7.0, - "rules": [ - { - "add_base": true, - "damage": 6.0, - "entities": "#minecraft:proficient_with_golden_weapons" - } - ] + "rules": [] }, "attack_speed": 0.25, "damage_per_hit": 2 diff --git a/src/main/generated/data/minecraft/item/golden_boots.json b/src/main/generated/data/minecraft/item/golden_boots.json index 9c9a8fcc..e52ff9d0 100644 --- a/src/main/generated/data/minecraft/item/golden_boots.json +++ b/src/main/generated/data/minecraft/item/golden_boots.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_armor" + "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/golden_chestplate.json b/src/main/generated/data/minecraft/item/golden_chestplate.json index b871fc75..49d81c67 100644 --- a/src/main/generated/data/minecraft/item/golden_chestplate.json +++ b/src/main/generated/data/minecraft/item/golden_chestplate.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_armor" + "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/golden_helmet.json b/src/main/generated/data/minecraft/item/golden_helmet.json index 1fb485a0..558d1a7e 100644 --- a/src/main/generated/data/minecraft/item/golden_helmet.json +++ b/src/main/generated/data/minecraft/item/golden_helmet.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_armor" + "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/golden_hoe.json b/src/main/generated/data/minecraft/item/golden_hoe.json index e83b1fe5..b99174f1 100644 --- a/src/main/generated/data/minecraft/item/golden_hoe.json +++ b/src/main/generated/data/minecraft/item/golden_hoe.json @@ -10,7 +10,7 @@ "enchantability": 22 }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_tool" + "items": "#minecraft:gold_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { @@ -29,13 +29,7 @@ "minecraft:weapon": { "attack_damage": { "default_damage": 1.0, - "rules": [ - { - "add_base": true, - "damage": 0.0, - "entities": "#minecraft:proficient_with_golden_weapons" - } - ] + "rules": [] }, "attack_speed": 0.25, "damage_per_hit": 2 diff --git a/src/main/generated/data/minecraft/item/golden_leggings.json b/src/main/generated/data/minecraft/item/golden_leggings.json index 603ee5ae..cddb97aa 100644 --- a/src/main/generated/data/minecraft/item/golden_leggings.json +++ b/src/main/generated/data/minecraft/item/golden_leggings.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_armor" + "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/golden_pickaxe.json b/src/main/generated/data/minecraft/item/golden_pickaxe.json index fb351533..acb05cb3 100644 --- a/src/main/generated/data/minecraft/item/golden_pickaxe.json +++ b/src/main/generated/data/minecraft/item/golden_pickaxe.json @@ -10,7 +10,7 @@ "enchantability": 22 }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_tool" + "items": "#minecraft:gold_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { @@ -29,13 +29,7 @@ "minecraft:weapon": { "attack_damage": { "default_damage": 2.0, - "rules": [ - { - "add_base": true, - "damage": 1.0, - "entities": "#minecraft:proficient_with_golden_weapons" - } - ] + "rules": [] }, "attack_speed": 0.3, "damage_per_hit": 2 diff --git a/src/main/generated/data/minecraft/item/golden_shovel.json b/src/main/generated/data/minecraft/item/golden_shovel.json index 924a52a1..c5921ee9 100644 --- a/src/main/generated/data/minecraft/item/golden_shovel.json +++ b/src/main/generated/data/minecraft/item/golden_shovel.json @@ -10,7 +10,7 @@ "enchantability": 22 }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_tool" + "items": "#minecraft:gold_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { @@ -29,13 +29,7 @@ "minecraft:weapon": { "attack_damage": { "default_damage": 2.5, - "rules": [ - { - "add_base": true, - "damage": 1.5, - "entities": "#minecraft:proficient_with_golden_weapons" - } - ] + "rules": [] }, "attack_speed": 0.25, "damage_per_hit": 2 diff --git a/src/main/generated/data/minecraft/item/golden_sword.json b/src/main/generated/data/minecraft/item/golden_sword.json index 14454b67..1a762d9f 100644 --- a/src/main/generated/data/minecraft/item/golden_sword.json +++ b/src/main/generated/data/minecraft/item/golden_sword.json @@ -10,7 +10,7 @@ "enchantability": 22 }, "minecraft:repairable": { - "items": "minecraft:repairs_golden_tool" + "items": "#minecraft:gold_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { @@ -30,13 +30,7 @@ "minecraft:weapon": { "attack_damage": { "default_damage": 4.0, - "rules": [ - { - "add_base": true, - "damage": 3.0, - "entities": "#minecraft:proficient_with_golden_weapons" - } - ] + "rules": [] }, "attack_speed": 0.4 } diff --git a/src/main/generated/data/minecraft/item/guardian_spawn_egg.json b/src/main/generated/data/minecraft/item/guardian_spawn_egg.json index 80e8465b..040848d3 100644 --- a/src/main/generated/data/minecraft/item/guardian_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/guardian_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:guardian" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15826224 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/guster_banner_pattern.json b/src/main/generated/data/minecraft/item/guster_banner_pattern.json index 794d08e4..072d1df8 100644 --- a/src/main/generated/data/minecraft/item/guster_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/guster_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { "rarity": "rare", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.guster_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.guster_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/guster_pottery_sherd.json b/src/main/generated/data/minecraft/item/guster_pottery_sherd.json index 6afe3df4..9d828c02 100644 --- a/src/main/generated/data/minecraft/item/guster_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/guster_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.guster_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/heart_pottery_sherd.json b/src/main/generated/data/minecraft/item/heart_pottery_sherd.json index 60eeca90..70758e74 100644 --- a/src/main/generated/data/minecraft/item/heart_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/heart_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.heart_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json b/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json index 56367694..5d7f66c9 100644 --- a/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.heartbreak_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json b/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json index ae666c09..5fcfeb7f 100644 --- a/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:hoglin" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 6251620 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/honey_bottle.json b/src/main/generated/data/minecraft/item/honey_bottle.json index 93f7a440..241a0875 100644 --- a/src/main/generated/data/minecraft/item/honey_bottle.json +++ b/src/main/generated/data/minecraft/item/honey_bottle.json @@ -5,19 +5,19 @@ "components": { "minecraft:consumable": { "has_consume_particles": false, - "result_item": "minecraft:glass_bottle", "sound": "minecraft:item.honey_bottle.drink" }, "minecraft:food": { "nutrition": 6, "saturation": 1.2 }, - "minecraft:recipe_remainder": { - "item": "minecraft:glass_bottle" - }, "minecraft:stackable": 16, "minecraft:useable": { "animation": "drink", + "remainder": { + "id": "minecraft:glass_bottle", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 40 diff --git a/src/main/generated/data/minecraft/item/horse_spawn_egg.json b/src/main/generated/data/minecraft/item/horse_spawn_egg.json index 74a715bf..de1055ba 100644 --- a/src/main/generated/data/minecraft/item/horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/horse_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:horse" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15656192 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json index 287fe3c9..751e9fd9 100644 --- a/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.host_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/howl_pottery_sherd.json b/src/main/generated/data/minecraft/item/howl_pottery_sherd.json index b0c86d3e..ebe4e9a9 100644 --- a/src/main/generated/data/minecraft/item/howl_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/howl_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.howl_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/husk_spawn_egg.json b/src/main/generated/data/minecraft/item/husk_spawn_egg.json index 93bf5def..d4b4c0ea 100644 --- a/src/main/generated/data/minecraft/item/husk_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/husk_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:husk" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15125652 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_axe.json b/src/main/generated/data/minecraft/item/iron_axe.json index 8ebfed3a..19f1a17f 100644 --- a/src/main/generated/data/minecraft/item/iron_axe.json +++ b/src/main/generated/data/minecraft/item/iron_axe.json @@ -10,7 +10,7 @@ "enchantability": 14 }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_tool" + "items": "#minecraft:iron_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/iron_boots.json b/src/main/generated/data/minecraft/item/iron_boots.json index 8270fb7c..a1923001 100644 --- a/src/main/generated/data/minecraft/item/iron_boots.json +++ b/src/main/generated/data/minecraft/item/iron_boots.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_armor" + "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/iron_chestplate.json b/src/main/generated/data/minecraft/item/iron_chestplate.json index ed3e7f05..ba914d3b 100644 --- a/src/main/generated/data/minecraft/item/iron_chestplate.json +++ b/src/main/generated/data/minecraft/item/iron_chestplate.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_armor" + "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json b/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json index fa473ac5..7068257b 100644 --- a/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:iron_golem" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7643954 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_helmet.json b/src/main/generated/data/minecraft/item/iron_helmet.json index 75ad2db9..3b41ae61 100644 --- a/src/main/generated/data/minecraft/item/iron_helmet.json +++ b/src/main/generated/data/minecraft/item/iron_helmet.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_armor" + "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/iron_hoe.json b/src/main/generated/data/minecraft/item/iron_hoe.json index 64608658..6ca24254 100644 --- a/src/main/generated/data/minecraft/item/iron_hoe.json +++ b/src/main/generated/data/minecraft/item/iron_hoe.json @@ -10,7 +10,7 @@ "enchantability": 14 }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_tool" + "items": "#minecraft:iron_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/iron_leggings.json b/src/main/generated/data/minecraft/item/iron_leggings.json index c349613c..8aa4661f 100644 --- a/src/main/generated/data/minecraft/item/iron_leggings.json +++ b/src/main/generated/data/minecraft/item/iron_leggings.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_armor" + "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/iron_pickaxe.json b/src/main/generated/data/minecraft/item/iron_pickaxe.json index 450a43c5..623bdddb 100644 --- a/src/main/generated/data/minecraft/item/iron_pickaxe.json +++ b/src/main/generated/data/minecraft/item/iron_pickaxe.json @@ -10,7 +10,7 @@ "enchantability": 14 }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_tool" + "items": "#minecraft:iron_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/iron_shovel.json b/src/main/generated/data/minecraft/item/iron_shovel.json index 2e2c3d65..603a5e9c 100644 --- a/src/main/generated/data/minecraft/item/iron_shovel.json +++ b/src/main/generated/data/minecraft/item/iron_shovel.json @@ -10,7 +10,7 @@ "enchantability": 14 }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_tool" + "items": "#minecraft:iron_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/iron_sword.json b/src/main/generated/data/minecraft/item/iron_sword.json index 32582fe3..93cad6ab 100644 --- a/src/main/generated/data/minecraft/item/iron_sword.json +++ b/src/main/generated/data/minecraft/item/iron_sword.json @@ -10,7 +10,7 @@ "enchantability": 14 }, "minecraft:repairable": { - "items": "minecraft:repairs_iron_tool" + "items": "#minecraft:iron_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/lava_bucket.json b/src/main/generated/data/minecraft/item/lava_bucket.json index 9ffb2ca7..93c4de58 100644 --- a/src/main/generated/data/minecraft/item/lava_bucket.json +++ b/src/main/generated/data/minecraft/item/lava_bucket.json @@ -12,11 +12,12 @@ "behavior": "minecraft:use_bucket" }, "minecraft:fuel": { + "remainder": { + "id": "minecraft:bucket", + "count": 1 + }, "ticks": 20000 }, - "minecraft:recipe_remainder": { - "item": "minecraft:bucket" - }, "minecraft:stackable": 1 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_boots.json b/src/main/generated/data/minecraft/item/leather_boots.json index 998ccb95..88da1961 100644 --- a/src/main/generated/data/minecraft/item/leather_boots.json +++ b/src/main/generated/data/minecraft/item/leather_boots.json @@ -24,7 +24,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_leather_armor" + "items": "#minecraft:repairs_leather_armor" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/leather_chestplate.json b/src/main/generated/data/minecraft/item/leather_chestplate.json index 30276445..f983145c 100644 --- a/src/main/generated/data/minecraft/item/leather_chestplate.json +++ b/src/main/generated/data/minecraft/item/leather_chestplate.json @@ -24,7 +24,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_leather_armor" + "items": "#minecraft:repairs_leather_armor" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/leather_helmet.json b/src/main/generated/data/minecraft/item/leather_helmet.json index 8c77f8b0..b9768e0e 100644 --- a/src/main/generated/data/minecraft/item/leather_helmet.json +++ b/src/main/generated/data/minecraft/item/leather_helmet.json @@ -24,7 +24,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_leather_armor" + "items": "#minecraft:repairs_leather_armor" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/leather_leggings.json b/src/main/generated/data/minecraft/item/leather_leggings.json index 1ae7ecdf..447a0daa 100644 --- a/src/main/generated/data/minecraft/item/leather_leggings.json +++ b/src/main/generated/data/minecraft/item/leather_leggings.json @@ -24,7 +24,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_leather_armor" + "items": "#minecraft:repairs_leather_armor" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/llama_spawn_egg.json b/src/main/generated/data/minecraft/item/llama_spawn_egg.json index b624b4df..f54207d5 100644 --- a/src/main/generated/data/minecraft/item/llama_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/llama_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:llama" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 10051392 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mace.json b/src/main/generated/data/minecraft/item/mace.json index ed40aff6..dc06188c 100644 --- a/src/main/generated/data/minecraft/item/mace.json +++ b/src/main/generated/data/minecraft/item/mace.json @@ -11,7 +11,7 @@ "enchantability": 15 }, "minecraft:repairable": { - "items": "minecraft:repairs_mace" + "items": "minecraft:breeze_rod" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json b/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json index f549ba95..5451f91e 100644 --- a/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:magma_cube" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16579584 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/milk_bucket.json b/src/main/generated/data/minecraft/item/milk_bucket.json index 8c3a57f9..a644b23d 100644 --- a/src/main/generated/data/minecraft/item/milk_bucket.json +++ b/src/main/generated/data/minecraft/item/milk_bucket.json @@ -5,15 +5,15 @@ "components": { "minecraft:consumable": { "has_consume_particles": false, - "result_item": "minecraft:bucket", "sound": "minecraft:entity.generic.drink" }, - "minecraft:recipe_remainder": { - "item": "minecraft:bucket" - }, "minecraft:stackable": 1, "minecraft:useable": { "animation": "drink", + "remainder": { + "id": "minecraft:bucket", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 diff --git a/src/main/generated/data/minecraft/item/miner_pottery_sherd.json b/src/main/generated/data/minecraft/item/miner_pottery_sherd.json index e2a472a2..7a6da38e 100644 --- a/src/main/generated/data/minecraft/item/miner_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/miner_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.miner_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/mojang_banner_pattern.json b/src/main/generated/data/minecraft/item/mojang_banner_pattern.json index baef4124..18f4a055 100644 --- a/src/main/generated/data/minecraft/item/mojang_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/mojang_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { - "rarity": "epic", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.mojang_banner_pattern.desc" - } - ], + "rarity": "rare", "translation_key": "item.minecraft.mojang_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json b/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json index 38d1d3bf..d1dd3bd9 100644 --- a/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:mooshroom" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 12040119 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json b/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json index 662cf01c..7a78605d 100644 --- a/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.mourner_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/mule_spawn_egg.json b/src/main/generated/data/minecraft/item/mule_spawn_egg.json index bce47c59..dcbbe93d 100644 --- a/src/main/generated/data/minecraft/item/mule_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/mule_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:mule" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5321501 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mushroom_stew.json b/src/main/generated/data/minecraft/item/mushroom_stew.json index 6773cea3..ccdff293 100644 --- a/src/main/generated/data/minecraft/item/mushroom_stew.json +++ b/src/main/generated/data/minecraft/item/mushroom_stew.json @@ -3,9 +3,7 @@ "translation_key": "item.minecraft.mushroom_stew" }, "components": { - "minecraft:consumable": { - "result_item": "minecraft:bowl" - }, + "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, "saturation": 7.2000003 @@ -13,6 +11,10 @@ "minecraft:stackable": 1, "minecraft:useable": { "animation": "eat", + "remainder": { + "id": "minecraft:bowl", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 diff --git a/src/main/generated/data/minecraft/item/music_disc_11.json b/src/main/generated/data/minecraft/item/music_disc_11.json index f39cdd1b..67c68fd2 100644 --- a/src/main/generated/data/minecraft/item/music_disc_11.json +++ b/src/main/generated/data/minecraft/item/music_disc_11.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_11" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_13.json b/src/main/generated/data/minecraft/item/music_disc_13.json index ca0b15dc..c6bed401 100644 --- a/src/main/generated/data/minecraft/item/music_disc_13.json +++ b/src/main/generated/data/minecraft/item/music_disc_13.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_13" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_5.json b/src/main/generated/data/minecraft/item/music_disc_5.json index fd12710f..0ba65747 100644 --- a/src/main/generated/data/minecraft/item/music_disc_5.json +++ b/src/main/generated/data/minecraft/item/music_disc_5.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_5" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_blocks.json b/src/main/generated/data/minecraft/item/music_disc_blocks.json index b27c5e5e..84d5cb90 100644 --- a/src/main/generated/data/minecraft/item/music_disc_blocks.json +++ b/src/main/generated/data/minecraft/item/music_disc_blocks.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_blocks" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_cat.json b/src/main/generated/data/minecraft/item/music_disc_cat.json index 2fae73d1..8a4b0100 100644 --- a/src/main/generated/data/minecraft/item/music_disc_cat.json +++ b/src/main/generated/data/minecraft/item/music_disc_cat.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_cat" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_chirp.json b/src/main/generated/data/minecraft/item/music_disc_chirp.json index f64c6c5d..b0127eb3 100644 --- a/src/main/generated/data/minecraft/item/music_disc_chirp.json +++ b/src/main/generated/data/minecraft/item/music_disc_chirp.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_chirp" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_creator.json b/src/main/generated/data/minecraft/item/music_disc_creator.json index 4f09d315..be926b67 100644 --- a/src/main/generated/data/minecraft/item/music_disc_creator.json +++ b/src/main/generated/data/minecraft/item/music_disc_creator.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "rare", "translation_key": "item.minecraft.music_disc_creator" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json b/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json index 124892c3..bb9be240 100644 --- a/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json +++ b/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_creator_music_box" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_far.json b/src/main/generated/data/minecraft/item/music_disc_far.json index 4a4c6d59..b5166159 100644 --- a/src/main/generated/data/minecraft/item/music_disc_far.json +++ b/src/main/generated/data/minecraft/item/music_disc_far.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_far" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_mall.json b/src/main/generated/data/minecraft/item/music_disc_mall.json index 055ea3b6..77f42188 100644 --- a/src/main/generated/data/minecraft/item/music_disc_mall.json +++ b/src/main/generated/data/minecraft/item/music_disc_mall.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_mall" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_mellohi.json b/src/main/generated/data/minecraft/item/music_disc_mellohi.json index 45ea00e5..4f3b3d7a 100644 --- a/src/main/generated/data/minecraft/item/music_disc_mellohi.json +++ b/src/main/generated/data/minecraft/item/music_disc_mellohi.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_mellohi" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_otherside.json b/src/main/generated/data/minecraft/item/music_disc_otherside.json index 35769674..1b3f9758 100644 --- a/src/main/generated/data/minecraft/item/music_disc_otherside.json +++ b/src/main/generated/data/minecraft/item/music_disc_otherside.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "rare", "translation_key": "item.minecraft.music_disc_otherside" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_pigstep.json b/src/main/generated/data/minecraft/item/music_disc_pigstep.json index 2136d135..9da7f58b 100644 --- a/src/main/generated/data/minecraft/item/music_disc_pigstep.json +++ b/src/main/generated/data/minecraft/item/music_disc_pigstep.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "rare", "translation_key": "item.minecraft.music_disc_pigstep" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_precipice.json b/src/main/generated/data/minecraft/item/music_disc_precipice.json index 17281f2e..0ad5ec24 100644 --- a/src/main/generated/data/minecraft/item/music_disc_precipice.json +++ b/src/main/generated/data/minecraft/item/music_disc_precipice.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_precipice" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_relic.json b/src/main/generated/data/minecraft/item/music_disc_relic.json index 539ce384..b365b3f1 100644 --- a/src/main/generated/data/minecraft/item/music_disc_relic.json +++ b/src/main/generated/data/minecraft/item/music_disc_relic.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_relic" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_stal.json b/src/main/generated/data/minecraft/item/music_disc_stal.json index cd13027f..013d9800 100644 --- a/src/main/generated/data/minecraft/item/music_disc_stal.json +++ b/src/main/generated/data/minecraft/item/music_disc_stal.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_stal" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_strad.json b/src/main/generated/data/minecraft/item/music_disc_strad.json index e79d948a..edd2b3df 100644 --- a/src/main/generated/data/minecraft/item/music_disc_strad.json +++ b/src/main/generated/data/minecraft/item/music_disc_strad.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_strad" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_wait.json b/src/main/generated/data/minecraft/item/music_disc_wait.json index 7a6af79e..892d8f73 100644 --- a/src/main/generated/data/minecraft/item/music_disc_wait.json +++ b/src/main/generated/data/minecraft/item/music_disc_wait.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_wait" }, "components": { diff --git a/src/main/generated/data/minecraft/item/music_disc_ward.json b/src/main/generated/data/minecraft/item/music_disc_ward.json index ce3e4ab6..97748c3d 100644 --- a/src/main/generated/data/minecraft/item/music_disc_ward.json +++ b/src/main/generated/data/minecraft/item/music_disc_ward.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "uncommon", "translation_key": "item.minecraft.music_disc_ward" }, "components": { diff --git a/src/main/generated/data/minecraft/item/nautilus_shell.json b/src/main/generated/data/minecraft/item/nautilus_shell.json index 5b3290e6..cdac2d15 100644 --- a/src/main/generated/data/minecraft/item/nautilus_shell.json +++ b/src/main/generated/data/minecraft/item/nautilus_shell.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.nautilus_shell" }, "components": { diff --git a/src/main/generated/data/minecraft/item/nether_star.json b/src/main/generated/data/minecraft/item/nether_star.json index ba635db5..7d39bd48 100644 --- a/src/main/generated/data/minecraft/item/nether_star.json +++ b/src/main/generated/data/minecraft/item/nether_star.json @@ -1,7 +1,7 @@ { "base": { "glint": true, - "rarity": "uncommon", + "rarity": "rare", "translation_key": "item.minecraft.nether_star" }, "components": { diff --git a/src/main/generated/data/minecraft/item/netherite_axe.json b/src/main/generated/data/minecraft/item/netherite_axe.json index 7f8dfe00..ffa32e1e 100644 --- a/src/main/generated/data/minecraft/item/netherite_axe.json +++ b/src/main/generated/data/minecraft/item/netherite_axe.json @@ -13,7 +13,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_tool" + "items": "#minecraft:netherite_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/netherite_boots.json b/src/main/generated/data/minecraft/item/netherite_boots.json index b337f128..5aca3ea6 100644 --- a/src/main/generated/data/minecraft/item/netherite_boots.json +++ b/src/main/generated/data/minecraft/item/netherite_boots.json @@ -24,7 +24,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_armor" + "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/netherite_chestplate.json b/src/main/generated/data/minecraft/item/netherite_chestplate.json index 8b1cf3e7..1f570d37 100644 --- a/src/main/generated/data/minecraft/item/netherite_chestplate.json +++ b/src/main/generated/data/minecraft/item/netherite_chestplate.json @@ -24,7 +24,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_armor" + "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/netherite_helmet.json b/src/main/generated/data/minecraft/item/netherite_helmet.json index 4bc0f6a8..41e890ff 100644 --- a/src/main/generated/data/minecraft/item/netherite_helmet.json +++ b/src/main/generated/data/minecraft/item/netherite_helmet.json @@ -24,7 +24,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_armor" + "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/netherite_hoe.json b/src/main/generated/data/minecraft/item/netherite_hoe.json index 94961596..c4446103 100644 --- a/src/main/generated/data/minecraft/item/netherite_hoe.json +++ b/src/main/generated/data/minecraft/item/netherite_hoe.json @@ -13,7 +13,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_tool" + "items": "#minecraft:netherite_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/netherite_leggings.json b/src/main/generated/data/minecraft/item/netherite_leggings.json index c1ec96d7..3b1e7cac 100644 --- a/src/main/generated/data/minecraft/item/netherite_leggings.json +++ b/src/main/generated/data/minecraft/item/netherite_leggings.json @@ -24,7 +24,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_armor" + "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/netherite_pickaxe.json b/src/main/generated/data/minecraft/item/netherite_pickaxe.json index 66393a94..1341bd76 100644 --- a/src/main/generated/data/minecraft/item/netherite_pickaxe.json +++ b/src/main/generated/data/minecraft/item/netherite_pickaxe.json @@ -13,7 +13,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_tool" + "items": "#minecraft:netherite_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/netherite_shovel.json b/src/main/generated/data/minecraft/item/netherite_shovel.json index 78e1bf06..63616413 100644 --- a/src/main/generated/data/minecraft/item/netherite_shovel.json +++ b/src/main/generated/data/minecraft/item/netherite_shovel.json @@ -13,7 +13,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_tool" + "items": "#minecraft:netherite_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/netherite_sword.json b/src/main/generated/data/minecraft/item/netherite_sword.json index 8e1c5a6f..ca342db7 100644 --- a/src/main/generated/data/minecraft/item/netherite_sword.json +++ b/src/main/generated/data/minecraft/item/netherite_sword.json @@ -13,7 +13,7 @@ "damage": "minecraft:is_fire" }, "minecraft:repairable": { - "items": "minecraft:repairs_netherite_tool" + "items": "#minecraft:netherite_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json b/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json index 2e3c4fb8..9bf4f23a 100644 --- a/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json +++ b/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.netherite_upgrade_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json b/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json index f453d1dd..fb9629a0 100644 --- a/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:ocelot" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5653556 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/panda_spawn_egg.json b/src/main/generated/data/minecraft/item/panda_spawn_egg.json index f1e6fcf6..74dd3705 100644 --- a/src/main/generated/data/minecraft/item/panda_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/panda_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:panda" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 1776418 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/parrot_spawn_egg.json b/src/main/generated/data/minecraft/item/parrot_spawn_egg.json index 43f971ed..a0f3aa30 100644 --- a/src/main/generated/data/minecraft/item/parrot_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/parrot_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:parrot" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16711680 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/phantom_spawn_egg.json b/src/main/generated/data/minecraft/item/phantom_spawn_egg.json index b61a7d14..e6494186 100644 --- a/src/main/generated/data/minecraft/item/phantom_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/phantom_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:phantom" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8978176 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pig_spawn_egg.json b/src/main/generated/data/minecraft/item/pig_spawn_egg.json index 8ab03f29..960b126d 100644 --- a/src/main/generated/data/minecraft/item/pig_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pig_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:pig" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 14377823 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_banner_pattern.json b/src/main/generated/data/minecraft/item/piglin_banner_pattern.json index e01e794a..79e03037 100644 --- a/src/main/generated/data/minecraft/item/piglin_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/piglin_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { "rarity": "uncommon", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.piglin_banner_pattern.desc" - } - ], "translation_key": "item.minecraft.piglin_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json b/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json index d6291a94..c7ff6c73 100644 --- a/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:piglin_brute" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16380836 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_spawn_egg.json b/src/main/generated/data/minecraft/item/piglin_spawn_egg.json index 754224e4..f74a1f76 100644 --- a/src/main/generated/data/minecraft/item/piglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/piglin_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:piglin" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16380836 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pillager_spawn_egg.json b/src/main/generated/data/minecraft/item/pillager_spawn_egg.json index e2fd25ea..73d0a224 100644 --- a/src/main/generated/data/minecraft/item/pillager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pillager_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:pillager" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 9804699 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json b/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json index 8942ef35..6a4dd3d5 100644 --- a/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.plenty_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/poisonous_potato.json b/src/main/generated/data/minecraft/item/poisonous_potato.json index e535b2e1..96751e5c 100644 --- a/src/main/generated/data/minecraft/item/poisonous_potato.json +++ b/src/main/generated/data/minecraft/item/poisonous_potato.json @@ -5,16 +5,6 @@ "components": { "minecraft:consumable": {}, "minecraft:food": { - "effects": [ - { - "effect": { - "id": "minecraft:poison", - "duration": 100, - "show_icon": true - }, - "probability": 0.6 - } - ], "nutrition": 2, "saturation": 1.2 }, @@ -26,5 +16,30 @@ "amount": 32 } } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:poison", + "duration": 100, + "show_icon": true + } + ], + "entity": "this" + }, + "requirements": { + "conditions": { + "chance": 0.6, + "condition": "minecraft:random_chance" + }, + "context": { + "entity": "this", + "position": "this" + } + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json b/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json index 0ddabc3c..5bbc5110 100644 --- a/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:polar_bear" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 14014157 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/potion.json b/src/main/generated/data/minecraft/item/potion.json index 00b2ee63..19fb7895 100644 --- a/src/main/generated/data/minecraft/item/potion.json +++ b/src/main/generated/data/minecraft/item/potion.json @@ -5,7 +5,6 @@ "components": { "minecraft:consumable": { "has_consume_particles": false, - "result_item": "minecraft:glass_bottle", "sound": "minecraft:entity.generic.drink" }, "minecraft:dispensable": { @@ -23,6 +22,10 @@ }, "minecraft:useable": { "animation": "drink", + "remainder": { + "id": "minecraft:glass_bottle", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 diff --git a/src/main/generated/data/minecraft/item/prize_pottery_sherd.json b/src/main/generated/data/minecraft/item/prize_pottery_sherd.json index 35702be8..b63f8594 100644 --- a/src/main/generated/data/minecraft/item/prize_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/prize_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.prize_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/pufferfish.json b/src/main/generated/data/minecraft/item/pufferfish.json index 1f3452cd..fd62bc51 100644 --- a/src/main/generated/data/minecraft/item/pufferfish.json +++ b/src/main/generated/data/minecraft/item/pufferfish.json @@ -5,40 +5,42 @@ "components": { "minecraft:consumable": {}, "minecraft:food": { - "effects": [ - { - "effect": { + "nutrition": 1, + "saturation": 0.2 + }, + "minecraft:stackable": 64, + "minecraft:useable": { + "animation": "eat", + "ticks": { + "type": "minecraft:constant", + "amount": 32 + } + } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { "id": "minecraft:poison", "amplifier": 1, "duration": 1200, "show_icon": true - } - }, - { - "effect": { + }, + { "id": "minecraft:hunger", "amplifier": 2, "duration": 300, "show_icon": true - } - }, - { - "effect": { + }, + { "id": "minecraft:nausea", "duration": 300, "show_icon": true } - } - ], - "nutrition": 1, - "saturation": 0.2 - }, - "minecraft:stackable": 64, - "minecraft:useable": { - "animation": "eat", - "ticks": { - "type": "minecraft:constant", - "amount": 32 + ], + "entity": "this" } } } diff --git a/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json b/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json index 1f4bb78c..9182ef47 100644 --- a/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:pufferfish" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 3654642 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json b/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json index 48947d1f..a42f5ea0 100644 --- a/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:rabbit" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7555121 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_stew.json b/src/main/generated/data/minecraft/item/rabbit_stew.json index f43ca5b1..aea402ee 100644 --- a/src/main/generated/data/minecraft/item/rabbit_stew.json +++ b/src/main/generated/data/minecraft/item/rabbit_stew.json @@ -3,9 +3,7 @@ "translation_key": "item.minecraft.rabbit_stew" }, "components": { - "minecraft:consumable": { - "result_item": "minecraft:bowl" - }, + "minecraft:consumable": {}, "minecraft:food": { "nutrition": 10, "saturation": 12.0 @@ -13,6 +11,10 @@ "minecraft:stackable": 1, "minecraft:useable": { "animation": "eat", + "remainder": { + "id": "minecraft:bowl", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 diff --git a/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json index d76850fd..d607aa58 100644 --- a/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.raiser_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/ravager_spawn_egg.json b/src/main/generated/data/minecraft/item/ravager_spawn_egg.json index bce202f7..d3e75881 100644 --- a/src/main/generated/data/minecraft/item/ravager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ravager_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:ravager" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5984329 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/recovery_compass.json b/src/main/generated/data/minecraft/item/recovery_compass.json index e74e5351..25e519be 100644 --- a/src/main/generated/data/minecraft/item/recovery_compass.json +++ b/src/main/generated/data/minecraft/item/recovery_compass.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.recovery_compass" }, "components": { diff --git a/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json index da0f25e7..ee02c0e9 100644 --- a/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.rib_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/rotten_flesh.json b/src/main/generated/data/minecraft/item/rotten_flesh.json index c4e0a533..e15eee55 100644 --- a/src/main/generated/data/minecraft/item/rotten_flesh.json +++ b/src/main/generated/data/minecraft/item/rotten_flesh.json @@ -5,16 +5,6 @@ "components": { "minecraft:consumable": {}, "minecraft:food": { - "effects": [ - { - "effect": { - "id": "minecraft:hunger", - "duration": 600, - "show_icon": true - }, - "probability": 0.8 - } - ], "nutrition": 4, "saturation": 0.8 }, @@ -26,5 +16,30 @@ "amount": 32 } } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:hunger", + "duration": 600, + "show_icon": true + } + ], + "entity": "this" + }, + "requirements": { + "conditions": { + "chance": 0.8, + "condition": "minecraft:random_chance" + }, + "context": { + "entity": "this", + "position": "this" + } + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/salmon_spawn_egg.json b/src/main/generated/data/minecraft/item/salmon_spawn_egg.json index 98de7e68..62b99676 100644 --- a/src/main/generated/data/minecraft/item/salmon_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/salmon_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:salmon" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 951412 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json b/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json index dfdc9950..dd0c220e 100644 --- a/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.scrape_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json index 313a4061..e8be4677 100644 --- a/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.sentry_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json index 09a874ca..75118861 100644 --- a/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.shaper_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json b/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json index 4c211868..89342e8a 100644 --- a/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.sheaf_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/sheep_spawn_egg.json b/src/main/generated/data/minecraft/item/sheep_spawn_egg.json index 23a9292c..5ca28200 100644 --- a/src/main/generated/data/minecraft/item/sheep_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/sheep_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:sheep" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16758197 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json b/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json index e188f684..13953b2d 100644 --- a/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.shelter_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/shield.json b/src/main/generated/data/minecraft/item/shield.json index 6db391ee..d897a7f0 100644 --- a/src/main/generated/data/minecraft/item/shield.json +++ b/src/main/generated/data/minecraft/item/shield.json @@ -15,11 +15,14 @@ "slot": "offhand" }, "minecraft:repairable": { - "items": "minecraft:repairs_shield" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:useable": { - "animation": "block" + "animation": "block", + "ticks": { + "type": "minecraft:indefinite" + } } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shulker_spawn_egg.json b/src/main/generated/data/minecraft/item/shulker_spawn_egg.json index 30b453af..aa92968b 100644 --- a/src/main/generated/data/minecraft/item/shulker_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/shulker_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:shulker" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5060690 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json index d270e455..e5672fe5 100644 --- a/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "epic", "translation_key": "item.minecraft.silence_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json b/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json index 8e798313..c434f1a2 100644 --- a/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:silverfish" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 3158064 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json b/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json index 3e0bc420..e57c6636 100644 --- a/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:skeleton_horse" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15066584 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json b/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json index b5f8545d..3ac113f7 100644 --- a/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:skeleton" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 4802889 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skull_banner_pattern.json b/src/main/generated/data/minecraft/item/skull_banner_pattern.json index 950cd5b6..4dcda75e 100644 --- a/src/main/generated/data/minecraft/item/skull_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/skull_banner_pattern.json @@ -1,12 +1,6 @@ { "base": { - "rarity": "uncommon", - "tooltip": [ - { - "color": "gray", - "translate": "item.minecraft.skull_banner_pattern.desc" - } - ], + "rarity": "rare", "translation_key": "item.minecraft.skull_banner_pattern" }, "components": { diff --git a/src/main/generated/data/minecraft/item/skull_pottery_sherd.json b/src/main/generated/data/minecraft/item/skull_pottery_sherd.json index 8789fe20..8d3e0ac5 100644 --- a/src/main/generated/data/minecraft/item/skull_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/skull_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.skull_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/slime_spawn_egg.json b/src/main/generated/data/minecraft/item/slime_spawn_egg.json index fc661e76..e8b88014 100644 --- a/src/main/generated/data/minecraft/item/slime_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/slime_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:slime" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8306542 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sniffer_egg.json b/src/main/generated/data/minecraft/item/sniffer_egg.json index b555ca74..3697af43 100644 --- a/src/main/generated/data/minecraft/item/sniffer_egg.json +++ b/src/main/generated/data/minecraft/item/sniffer_egg.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "block.minecraft.sniffer_egg" }, "components": { diff --git a/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json b/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json index 11130e7f..58aab764 100644 --- a/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:sniffer" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 2468720 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snort_pottery_sherd.json b/src/main/generated/data/minecraft/item/snort_pottery_sherd.json index 45dbdb79..839eb2a4 100644 --- a/src/main/generated/data/minecraft/item/snort_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/snort_pottery_sherd.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.snort_pottery_sherd" }, "components": { diff --git a/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json index b6f7bf7f..6469961a 100644 --- a/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.snout_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json b/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json index 15f1626d..4f9c541a 100644 --- a/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:snow_golem" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 8496292 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spider_eye.json b/src/main/generated/data/minecraft/item/spider_eye.json index cf3e8806..8e14e2c6 100644 --- a/src/main/generated/data/minecraft/item/spider_eye.json +++ b/src/main/generated/data/minecraft/item/spider_eye.json @@ -5,15 +5,6 @@ "components": { "minecraft:consumable": {}, "minecraft:food": { - "effects": [ - { - "effect": { - "id": "minecraft:poison", - "duration": 100, - "show_icon": true - } - } - ], "nutrition": 2, "saturation": 3.2 }, @@ -25,5 +16,20 @@ "amount": 32 } } + }, + "events": { + "minecraft:consume_item": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:poison", + "duration": 100, + "show_icon": true + } + ], + "entity": "this" + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spider_spawn_egg.json b/src/main/generated/data/minecraft/item/spider_spawn_egg.json index 5bd71b1e..106bcfca 100644 --- a/src/main/generated/data/minecraft/item/spider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/spider_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:spider" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 11013646 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json index f45463db..330111a5 100644 --- a/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.spire_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/squid_spawn_egg.json b/src/main/generated/data/minecraft/item/squid_spawn_egg.json index b1b688b8..9d2ca3d3 100644 --- a/src/main/generated/data/minecraft/item/squid_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/squid_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:squid" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7375001 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_axe.json b/src/main/generated/data/minecraft/item/stone_axe.json index 7527df6a..9b129712 100644 --- a/src/main/generated/data/minecraft/item/stone_axe.json +++ b/src/main/generated/data/minecraft/item/stone_axe.json @@ -10,7 +10,7 @@ "enchantability": 5 }, "minecraft:repairable": { - "items": "minecraft:repairs_stone_tool" + "items": "#minecraft:stone_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/stone_hoe.json b/src/main/generated/data/minecraft/item/stone_hoe.json index 8156335d..7b836f8d 100644 --- a/src/main/generated/data/minecraft/item/stone_hoe.json +++ b/src/main/generated/data/minecraft/item/stone_hoe.json @@ -10,7 +10,7 @@ "enchantability": 5 }, "minecraft:repairable": { - "items": "minecraft:repairs_stone_tool" + "items": "#minecraft:stone_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/stone_pickaxe.json b/src/main/generated/data/minecraft/item/stone_pickaxe.json index 5aeea2f2..f1dbf27c 100644 --- a/src/main/generated/data/minecraft/item/stone_pickaxe.json +++ b/src/main/generated/data/minecraft/item/stone_pickaxe.json @@ -10,7 +10,7 @@ "enchantability": 5 }, "minecraft:repairable": { - "items": "minecraft:repairs_stone_tool" + "items": "#minecraft:stone_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/stone_shovel.json b/src/main/generated/data/minecraft/item/stone_shovel.json index 018267bf..5ea078e0 100644 --- a/src/main/generated/data/minecraft/item/stone_shovel.json +++ b/src/main/generated/data/minecraft/item/stone_shovel.json @@ -10,7 +10,7 @@ "enchantability": 5 }, "minecraft:repairable": { - "items": "minecraft:repairs_stone_tool" + "items": "#minecraft:stone_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/stone_sword.json b/src/main/generated/data/minecraft/item/stone_sword.json index ae1e02f3..a9ade236 100644 --- a/src/main/generated/data/minecraft/item/stone_sword.json +++ b/src/main/generated/data/minecraft/item/stone_sword.json @@ -10,7 +10,7 @@ "enchantability": 5 }, "minecraft:repairable": { - "items": "minecraft:repairs_stone_tool" + "items": "#minecraft:stone_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/stray_spawn_egg.json b/src/main/generated/data/minecraft/item/stray_spawn_egg.json index c25ea4bc..18773366 100644 --- a/src/main/generated/data/minecraft/item/stray_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/stray_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:stray" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 14543594 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/strider_spawn_egg.json b/src/main/generated/data/minecraft/item/strider_spawn_egg.json index baa88a61..2af53c57 100644 --- a/src/main/generated/data/minecraft/item/strider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/strider_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:strider" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5065037 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/suspicious_stew.json b/src/main/generated/data/minecraft/item/suspicious_stew.json index 6c702e45..a1dddcfa 100644 --- a/src/main/generated/data/minecraft/item/suspicious_stew.json +++ b/src/main/generated/data/minecraft/item/suspicious_stew.json @@ -3,9 +3,7 @@ "translation_key": "item.minecraft.suspicious_stew" }, "components": { - "minecraft:consumable": { - "result_item": "minecraft:bowl" - }, + "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, "nutrition": 6, @@ -14,6 +12,10 @@ "minecraft:stackable": 1, "minecraft:useable": { "animation": "eat", + "remainder": { + "id": "minecraft:bowl", + "count": 1 + }, "ticks": { "type": "minecraft:constant", "amount": 32 @@ -23,22 +25,8 @@ "events": { "minecraft:consume_item": { "action": { - "type": "minecraft:sequence", - "handler": "minecraft:passing", - "entries": [ - { - "action": { - "type": "minecraft:apply_suspicious_stew_effects_from_item", - "entity": "this" - } - }, - { - "action": { - "type": "minecraft:exchange_item", - "item": "minecraft:bowl" - } - } - ] + "type": "minecraft:apply_suspicious_stew_effects_from_item", + "entity": "this" } } } diff --git a/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json b/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json index e36db0ee..ec238103 100644 --- a/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:tadpole" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 1444352 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json index 7400103a..96f4b747 100644 --- a/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.tide_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json b/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json index 7b110f17..b9b0d454 100644 --- a/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:trader_llama" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 4547222 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trident.json b/src/main/generated/data/minecraft/item/trident.json index f479dd04..f7300005 100644 --- a/src/main/generated/data/minecraft/item/trident.json +++ b/src/main/generated/data/minecraft/item/trident.json @@ -1,6 +1,6 @@ { "base": { - "rarity": "epic", + "rarity": "rare", "translation_key": "item.minecraft.trident" }, "components": { diff --git a/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json b/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json index c9204991..afa394e2 100644 --- a/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:tropical_fish" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 16775663 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_helmet.json b/src/main/generated/data/minecraft/item/turtle_helmet.json index a20c6f3d..5306a97d 100644 --- a/src/main/generated/data/minecraft/item/turtle_helmet.json +++ b/src/main/generated/data/minecraft/item/turtle_helmet.json @@ -21,7 +21,7 @@ "swappable": true }, "minecraft:repairable": { - "items": "minecraft:repairs_turtle_armor" + "items": "#minecraft:repairs_turtle_armor" }, "minecraft:stackable": 1 } diff --git a/src/main/generated/data/minecraft/item/turtle_spawn_egg.json b/src/main/generated/data/minecraft/item/turtle_spawn_egg.json index db11c88d..0545648c 100644 --- a/src/main/generated/data/minecraft/item/turtle_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/turtle_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:turtle" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 44975 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json index 8f51395e..820bccea 100644 --- a/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.vex_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/vex_spawn_egg.json b/src/main/generated/data/minecraft/item/vex_spawn_egg.json index 8ab06401..7e0b7c95 100644 --- a/src/main/generated/data/minecraft/item/vex_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/vex_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:vex" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15265265 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/villager_spawn_egg.json b/src/main/generated/data/minecraft/item/villager_spawn_egg.json index 1cd9be26..44aad272 100644 --- a/src/main/generated/data/minecraft/item/villager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/villager_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:villager" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 12422002 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json b/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json index 82f0c83e..bbf61f3e 100644 --- a/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:vindicator" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 2580065 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json b/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json index d44e55bb..3152f291 100644 --- a/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:wandering_trader" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15377456 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json index 999614a1..81b59dd6 100644 --- a/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.ward_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/warden_spawn_egg.json b/src/main/generated/data/minecraft/item/warden_spawn_egg.json index 957046a9..5a5f2ca3 100644 --- a/src/main/generated/data/minecraft/item/warden_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/warden_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:warden" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 3790560 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/water_bucket.json b/src/main/generated/data/minecraft/item/water_bucket.json index 35e66c95..3fffa7b5 100644 --- a/src/main/generated/data/minecraft/item/water_bucket.json +++ b/src/main/generated/data/minecraft/item/water_bucket.json @@ -11,9 +11,6 @@ "minecraft:dispensable": { "behavior": "minecraft:use_bucket" }, - "minecraft:recipe_remainder": { - "item": "minecraft:bucket" - }, "minecraft:stackable": 1 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json index bfc597ab..e5e196b9 100644 --- a/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.wayfinder_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json index f52cc822..8f4f334e 100644 --- a/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json @@ -1,5 +1,6 @@ { "base": { + "rarity": "uncommon", "translation_key": "item.minecraft.wild_armor_trim_smithing_template" }, "components": { diff --git a/src/main/generated/data/minecraft/item/witch_spawn_egg.json b/src/main/generated/data/minecraft/item/witch_spawn_egg.json index 42742b47..041da8f0 100644 --- a/src/main/generated/data/minecraft/item/witch_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/witch_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:witch" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5349438 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json b/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json index 3a149eee..ee6f12f6 100644 --- a/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:wither_skeleton" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 4672845 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wither_spawn_egg.json b/src/main/generated/data/minecraft/item/wither_spawn_egg.json index 64f4f9cd..221e66e0 100644 --- a/src/main/generated/data/minecraft/item/wither_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wither_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:wither" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5075616 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wolf_spawn_egg.json b/src/main/generated/data/minecraft/item/wolf_spawn_egg.json index f4f365a6..984ef7cc 100644 --- a/src/main/generated/data/minecraft/item/wolf_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wolf_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:wolf" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 13545366 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wooden_axe.json b/src/main/generated/data/minecraft/item/wooden_axe.json index 1a76bbf8..caae3099 100644 --- a/src/main/generated/data/minecraft/item/wooden_axe.json +++ b/src/main/generated/data/minecraft/item/wooden_axe.json @@ -13,7 +13,7 @@ "ticks": 200 }, "minecraft:repairable": { - "items": "minecraft:repairs_wooden_tool" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/wooden_hoe.json b/src/main/generated/data/minecraft/item/wooden_hoe.json index 627201f3..a182f280 100644 --- a/src/main/generated/data/minecraft/item/wooden_hoe.json +++ b/src/main/generated/data/minecraft/item/wooden_hoe.json @@ -13,7 +13,7 @@ "ticks": 200 }, "minecraft:repairable": { - "items": "minecraft:repairs_wooden_tool" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/wooden_pickaxe.json b/src/main/generated/data/minecraft/item/wooden_pickaxe.json index 0bcc5ab7..2322787d 100644 --- a/src/main/generated/data/minecraft/item/wooden_pickaxe.json +++ b/src/main/generated/data/minecraft/item/wooden_pickaxe.json @@ -13,7 +13,7 @@ "ticks": 200 }, "minecraft:repairable": { - "items": "minecraft:repairs_wooden_tool" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/wooden_shovel.json b/src/main/generated/data/minecraft/item/wooden_shovel.json index 9b0689cd..c8dcec57 100644 --- a/src/main/generated/data/minecraft/item/wooden_shovel.json +++ b/src/main/generated/data/minecraft/item/wooden_shovel.json @@ -13,7 +13,7 @@ "ticks": 200 }, "minecraft:repairable": { - "items": "minecraft:repairs_wooden_tool" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/wooden_sword.json b/src/main/generated/data/minecraft/item/wooden_sword.json index 5e9fd309..ceaf89cc 100644 --- a/src/main/generated/data/minecraft/item/wooden_sword.json +++ b/src/main/generated/data/minecraft/item/wooden_sword.json @@ -13,7 +13,7 @@ "ticks": 200 }, "minecraft:repairable": { - "items": "minecraft:repairs_wooden_tool" + "items": "#minecraft:wooden_tool_materials" }, "minecraft:stackable": 1, "minecraft:tool": { diff --git a/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json b/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json index dca9ffdc..1bc8a024 100644 --- a/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:zoglin" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 15132390 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json index 68c31783..aa33d097 100644 --- a/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:zombie_horse" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 9945732 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_spawn_egg.json index 905a5476..bcd84d12 100644 --- a/src/main/generated/data/minecraft/item/zombie_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:zombie" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7969893 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json index 9b9765d5..cbedfeab 100644 --- a/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:zombie_villager" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 7969893 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json b/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json index d105257b..7b09fdad 100644 --- a/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json @@ -10,7 +10,11 @@ "allow_item_data": true, "entity": { "type": "minecraft:zombified_piglin" - } + }, + "passes": [ + "block", + "fluid" + ] }, "minecraft:spawn_egg": {}, "minecraft:stackable": 64, @@ -22,7 +26,6 @@ 5009705 ] } - }, - "minecraft:useable_on_fluid": {} + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item_group_entry_provider/functional_blocks.json b/src/main/generated/data/minecraft/item_group_entry_provider/functional_blocks.json index 263504e2..140e3e88 100644 --- a/src/main/generated/data/minecraft/item_group_entry_provider/functional_blocks.json +++ b/src/main/generated/data/minecraft/item_group_entry_provider/functional_blocks.json @@ -126,7 +126,8 @@ } ], "minecraft:hide_additional_tooltip": {}, - "minecraft:item_name": "{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}" + "minecraft:item_name": "{\"translate\":\"block.minecraft.ominous_banner\"}", + "minecraft:rarity": "uncommon" }, "item": "minecraft:white_banner" }, diff --git a/src/main/generated/data/minecraft/recipes/cake.json b/src/main/generated/data/minecraft/recipes/cake.json new file mode 100644 index 00000000..f49cf608 --- /dev/null +++ b/src/main/generated/data/minecraft/recipes/cake.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "items": "minecraft:milk_bucket", + "remainder": { + "id": "minecraft:bucket", + "count": 1 + } + }, + "B": "minecraft:sugar", + "C": "minecraft:wheat", + "E": "minecraft:egg" + }, + "pattern": [ + "AAA", + "BEB", + "CCC" + ], + "result": { + "id": "minecraft:cake", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/honey_block.json b/src/main/generated/data/minecraft/recipes/honey_block.json new file mode 100644 index 00000000..62942e2c --- /dev/null +++ b/src/main/generated/data/minecraft/recipes/honey_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": { + "items": "minecraft:honey_bottle", + "remainder": { + "id": "minecraft:glass_bottle", + "count": 1 + } + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "minecraft:honey_block", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/honey_bottle.json b/src/main/generated/data/minecraft/recipes/honey_bottle.json new file mode 100644 index 00000000..f78df609 --- /dev/null +++ b/src/main/generated/data/minecraft/recipes/honey_bottle.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "minecraft:honey_block", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle", + "minecraft:glass_bottle" + ], + "result": { + "id": "minecraft:honey_bottle", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json index 7444a3b1..326550a8 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "black", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:black_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json index 540f0ec2..d33383dd 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "blue", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:blue_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json index 5b70e1a3..b324bfc4 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "brown", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:brown_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json index d6eecb56..609f7012 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "cyan", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:cyan_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json index 780a93a5..a0c4bee7 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "gray", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:gray_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json index abbbca17..3f33682b 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "green", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:green_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json index 83b62c88..845093f4 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "light_blue", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:light_blue_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json index 40c9fc65..30986be2 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "light_gray", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:light_gray_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json index a385c6dc..4581d339 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "lime", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:lime_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json index 79fd7bc4..26bb8956 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "magenta", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:magenta_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json index 667d27c8..e854969a 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "orange", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:orange_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json index 2e75a81d..287a77b3 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "pink", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:pink_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json index a34357bd..7c48a7c2 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "purple", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:purple_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json index c8d1949d..68f297c7 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "red", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:red_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json index f1180ebc..b88de10d 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "white", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:white_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json index 2cb2a8f4..e0b53054 100644 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json +++ b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json @@ -2,8 +2,6 @@ "type": "minecraft:item_coloring", "category": "misc", "color": "yellow", - "ingredient": { - "tag": "minecraft:shulker_boxes" - }, + "ingredient": "#minecraft:shulker_boxes", "result": "minecraft:yellow_shulker_box" } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/sugar_from_honey_bottle.json b/src/main/generated/data/minecraft/recipes/sugar_from_honey_bottle.json new file mode 100644 index 00000000..38cb9362 --- /dev/null +++ b/src/main/generated/data/minecraft/recipes/sugar_from_honey_bottle.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "items": "minecraft:honey_bottle", + "remainder": { + "id": "minecraft:glass_bottle", + "count": 1 + } + } + ], + "result": { + "id": "minecraft:sugar", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/entity_type/proficient_with_golden_weapons.json b/src/main/generated/data/minecraft/tags/entity_type/proficient_with_golden_weapons.json deleted file mode 100644 index 0d53e8f9..00000000 --- a/src/main/generated/data/minecraft/tags/entity_type/proficient_with_golden_weapons.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "minecraft:piglin", - "minecraft:piglin_brute", - "minecraft:zombified_piglin" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/furnace_minecart_fuel.json b/src/main/generated/data/minecraft/tags/item/furnace_minecart_fuel.json deleted file mode 100644 index 43868c8e..00000000 --- a/src/main/generated/data/minecraft/tags/item/furnace_minecart_fuel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "minecraft:coal", - "minecraft:charcoal" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/item_group/banner_patterns.json b/src/main/generated/data/minecraft/tags/item/item_group/banner_patterns.json index 3b75513b..535a41fd 100644 --- a/src/main/generated/data/minecraft/tags/item/item_group/banner_patterns.json +++ b/src/main/generated/data/minecraft/tags/item/item_group/banner_patterns.json @@ -1,5 +1,7 @@ { "values": [ + "minecraft:field_masoned_banner_pattern", + "minecraft:bordure_indented_banner_pattern", "minecraft:flower_banner_pattern", "minecraft:creeper_banner_pattern", "minecraft:skull_banner_pattern", diff --git a/src/main/generated/data/minecraft/tags/item/repairs_diamond_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_diamond_tool.json deleted file mode 100644 index f44f30dd..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_diamond_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:diamond" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_elytra.json b/src/main/generated/data/minecraft/tags/item/repairs_elytra.json deleted file mode 100644 index 0dcdbf9d..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_elytra.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:phantom_membrane" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_golden_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_golden_tool.json deleted file mode 100644 index 07e9f66a..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_golden_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:gold_ingot" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_iron_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_iron_tool.json deleted file mode 100644 index c656021b..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_iron_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:iron_ingot" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_mace.json b/src/main/generated/data/minecraft/tags/item/repairs_mace.json deleted file mode 100644 index 8290ef56..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_mace.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:breeze_rod" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_netherite_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_netherite_tool.json deleted file mode 100644 index bd6929df..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_netherite_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:netherite_ingot" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_shield.json b/src/main/generated/data/minecraft/tags/item/repairs_shield.json deleted file mode 100644 index 97fee2c0..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_shield.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "#minecraft:planks" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_stone_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_stone_tool.json deleted file mode 100644 index d7e69e3f..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_stone_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "#minecraft:stone_tool_materials" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/repairs_wooden_tool.json b/src/main/generated/data/minecraft/tags/item/repairs_wooden_tool.json deleted file mode 100644 index 97fee2c0..00000000 --- a/src/main/generated/data/minecraft/tags/item/repairs_wooden_tool.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "#minecraft:planks" - ] -} \ No newline at end of file diff --git a/src/main/java/net/errorcraft/itematic/access/entity/LivingEntityAccess.java b/src/main/java/net/errorcraft/itematic/access/entity/LivingEntityAccess.java index f880d8a9..caab6e61 100644 --- a/src/main/java/net/errorcraft/itematic/access/entity/LivingEntityAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/entity/LivingEntityAccess.java @@ -1,12 +1,9 @@ package net.errorcraft.itematic.access.entity; -import net.errorcraft.itematic.item.ItemStackConsumer; -import net.minecraft.component.type.FoodComponent; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.util.Hand; -import net.minecraft.world.World; public interface LivingEntityAccess { default boolean itematic$isHolding(RegistryKey key) { @@ -15,7 +12,6 @@ public interface LivingEntityAccess { default ItemStack itematic$getAmmunition(ItemStack stack) { return ItemStack.EMPTY; } - default void itematic$eatFood(World world, ItemStack stack, FoodComponent food, ItemStackConsumer resultStackConsumer) {} default void itematic$startUsingHand(Hand hand, int ticks) {} default int itematic$itemUsedTicks() { return 0; diff --git a/src/main/java/net/errorcraft/itematic/access/recipe/IngredientAccess.java b/src/main/java/net/errorcraft/itematic/access/recipe/IngredientAccess.java index ce1ab3fe..2d924d49 100644 --- a/src/main/java/net/errorcraft/itematic/access/recipe/IngredientAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/recipe/IngredientAccess.java @@ -1,10 +1,12 @@ package net.errorcraft.itematic.access.recipe; import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryWrapper; + +import java.util.Optional; public interface IngredientAccess { - default ItemStack[] itematic$getMatchingStacks(RegistryWrapper.WrapperLookup lookup) { - return new ItemStack[0]; + default Optional itematic$remainder() { + return Optional.empty(); } + default void itematic$setRemainder(Optional remainder) {} } diff --git a/src/main/java/net/errorcraft/itematic/access/recipe/IngredientEntryAccess.java b/src/main/java/net/errorcraft/itematic/access/recipe/IngredientEntryAccess.java deleted file mode 100644 index cbf7ce90..00000000 --- a/src/main/java/net/errorcraft/itematic/access/recipe/IngredientEntryAccess.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.errorcraft.itematic.access.recipe; - -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryWrapper; - -import java.util.Collection; -import java.util.List; - -public interface IngredientEntryAccess { - default boolean itematic$test(ItemStack stack) { - return false; - } - default Collection itematic$getStacks(RegistryWrapper.WrapperLookup lookup) { - return List.of(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/access/recipe/RawShapedRecipeAccess.java b/src/main/java/net/errorcraft/itematic/access/recipe/RawShapedRecipeAccess.java new file mode 100644 index 00000000..5e775a13 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/access/recipe/RawShapedRecipeAccess.java @@ -0,0 +1,9 @@ +package net.errorcraft.itematic.access.recipe; + +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.util.collection.DefaultedList; + +public interface RawShapedRecipeAccess { + DefaultedList itematic$remainder(CraftingRecipeInput input); +} diff --git a/src/main/java/net/errorcraft/itematic/access/util/ActionResultAccess.java b/src/main/java/net/errorcraft/itematic/access/util/ActionResultAccess.java deleted file mode 100644 index 9d6c72ab..00000000 --- a/src/main/java/net/errorcraft/itematic/access/util/ActionResultAccess.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.errorcraft.itematic.access.util; - -import net.minecraft.util.ActionResult; - -public interface ActionResultAccess { - default ActionResult itematic$merge(ActionResult other) { - return null; - } -} diff --git a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java index 6b51a92a..fc9d1615 100644 --- a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java @@ -8,20 +8,19 @@ import net.errorcraft.itematic.mixin.component.DataComponentTypesAccessor; import net.errorcraft.itematic.network.codec.PacketCodecUtil; import net.errorcraft.itematic.serialization.ItematicCodecs; -import net.errorcraft.itematic.util.UseActionUtil; import net.minecraft.component.ComponentType; import net.minecraft.item.CrossbowItem; +import net.minecraft.item.consume.UseAction; import net.minecraft.network.codec.PacketCodecs; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; -import net.minecraft.util.UseAction; import org.apache.commons.lang3.math.Fraction; public class ItematicDataComponentTypes { public static final ComponentType IMMUNE_TO_DAMAGE = DataComponentTypesAccessor.register("immune_to_damage", builder -> builder.codec(ImmuneToDamageComponent.CODEC).packetCodec(ImmuneToDamageComponent.PACKET_CODEC)); public static final ComponentType USE_DURATION = DataComponentTypesAccessor.register("use_duration", builder -> builder.codec(UseDurationDataComponent.CODEC).packetCodec(UseDurationDataComponent.PACKET_CODEC).cache()); - public static final ComponentType USE_ANIMATION = DataComponentTypesAccessor.register("use_animation", builder -> builder.codec(UseActionUtil.CODEC).packetCodec(UseActionUtil.PACKET_CODEC).cache()); + public static final ComponentType USE_ANIMATION = DataComponentTypesAccessor.register("use_animation", builder -> builder.codec(UseAction.CODEC).packetCodec(UseAction.PACKET_CODEC).cache()); public static final ComponentType SHOOTER_AMMUNITION = DataComponentTypesAccessor.register("shooter_ammunition", builder -> builder.codec(ItemListDataComponent.CODEC).packetCodec(ItemListDataComponent.PACKET_CODEC).cache()); public static final ComponentType SHOOTER_HELD_AMMUNITION = DataComponentTypesAccessor.register("shooter_held_ammunition", builder -> builder.codec(ItemListDataComponent.CODEC).packetCodec(ItemListDataComponent.PACKET_CODEC).cache()); public static final ComponentType ATTACK_SPEED_MULTIPLIER = DataComponentTypesAccessor.register("attack_speed_multiplier", builder -> builder.codec(ItematicCodecs.NON_NEGATIVE_DOUBLE).packetCodec(PacketCodecs.DOUBLE).cache()); diff --git a/src/main/java/net/errorcraft/itematic/component/type/ItemDamageRulesDataComponent.java b/src/main/java/net/errorcraft/itematic/component/type/ItemDamageRulesDataComponent.java index fddaf5d6..25ea4358 100644 --- a/src/main/java/net/errorcraft/itematic/component/type/ItemDamageRulesDataComponent.java +++ b/src/main/java/net/errorcraft/itematic/component/type/ItemDamageRulesDataComponent.java @@ -18,7 +18,7 @@ public record ItemDamageRulesDataComponent(List rules, int defaultItemDamage) { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Rule.CODEC.listOf().fieldOf("rules").forGetter(ItemDamageRulesDataComponent::rules), - Codecs.NONNEGATIVE_INT.fieldOf("default_damage").forGetter(ItemDamageRulesDataComponent::defaultItemDamage) + Codecs.NON_NEGATIVE_INT.fieldOf("default_damage").forGetter(ItemDamageRulesDataComponent::defaultItemDamage) ).apply(instance, ItemDamageRulesDataComponent::new)); public static final PacketCodec PACKET_CODEC = PacketCodec.tuple( Rule.PACKET_CODEC.collect(PacketCodecs.toList()), ItemDamageRulesDataComponent::rules, @@ -39,7 +39,7 @@ public int damage(ItemStack stack) { public record Rule(RegistryEntryList items, Optional damage) { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryCodecs.entryList(RegistryKeys.ITEM).fieldOf("items").forGetter(Rule::items), - Codecs.NONNEGATIVE_INT.optionalFieldOf("damage").forGetter(Rule::damage) + Codecs.NON_NEGATIVE_INT.optionalFieldOf("damage").forGetter(Rule::damage) ).apply(instance, Rule::new)); public static final PacketCodec PACKET_CODEC = PacketCodec.tuple( PacketCodecs.registryEntryList(RegistryKeys.ITEM), Rule::items, diff --git a/src/main/java/net/errorcraft/itematic/component/type/UseDurationDataComponent.java b/src/main/java/net/errorcraft/itematic/component/type/UseDurationDataComponent.java index 2c12373e..cedd69cc 100644 --- a/src/main/java/net/errorcraft/itematic/component/type/UseDurationDataComponent.java +++ b/src/main/java/net/errorcraft/itematic/component/type/UseDurationDataComponent.java @@ -1,8 +1,6 @@ package net.errorcraft.itematic.component.type; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.item.use.provider.IntegerProvider; import net.errorcraft.itematic.item.use.provider.providers.ConstantIntegerProvider; import net.minecraft.entity.LivingEntity; @@ -11,39 +9,32 @@ import net.minecraft.item.ItemUsage; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; import net.minecraft.util.Hand; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -import java.util.Optional; - -public record UseDurationDataComponent(Optional ticks) { - public static final UseDurationDataComponent INDEFINITE = new UseDurationDataComponent(Optional.empty()); - public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - IntegerProvider.CODEC.optionalFieldOf("ticks").forGetter(UseDurationDataComponent::ticks) - ).apply(instance, UseDurationDataComponent::new)); +public record UseDurationDataComponent(IntegerProvider ticks) { + private static final Codec FULL_CODEC = IntegerProvider.CODEC.xmap( + UseDurationDataComponent::new, + UseDurationDataComponent::ticks + ); public static final Codec CODEC = Codec.withAlternative( - MAP_CODEC.codec(), + FULL_CODEC, Codecs.POSITIVE_INT, UseDurationDataComponent::new ); - public static final PacketCodec PACKET_CODEC = PacketCodecs.optional(IntegerProvider.PACKET_CODEC) - .xmap(UseDurationDataComponent::new, UseDurationDataComponent::ticks); + public static final PacketCodec PACKET_CODEC = IntegerProvider.PACKET_CODEC.xmap( + UseDurationDataComponent::new, + UseDurationDataComponent::ticks + ); public static final int INDEFINITE_USE_DURATION = -1; - public UseDurationDataComponent(IntegerProvider ticks) { - this(Optional.of(ticks)); - } - private UseDurationDataComponent(int ticks) { this(new ConstantIntegerProvider(ticks)); } public int ticks(ItemStack stack, LivingEntity user) { - return this.ticks.map(useDuration -> useDuration.get(stack, user)) - .map(useDuration -> useDuration.orElse(0)) - .orElse(INDEFINITE_USE_DURATION); + return this.ticks.get(stack, user).orElse(0); } public boolean startUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { @@ -51,11 +42,13 @@ public boolean startUsing(World world, PlayerEntity user, Hand hand, ItemStack s if (ticks == 0) { return false; } + if (ticks == INDEFINITE_USE_DURATION) { ItemUsage.consumeHeldItem(world, user, hand); } else { user.itematic$startUsingHand(hand, ticks); } + return true; } } diff --git a/src/main/java/net/errorcraft/itematic/component/type/WeaponAttackDamageDataComponent.java b/src/main/java/net/errorcraft/itematic/component/type/WeaponAttackDamageDataComponent.java index 861ba041..ed806c91 100644 --- a/src/main/java/net/errorcraft/itematic/component/type/WeaponAttackDamageDataComponent.java +++ b/src/main/java/net/errorcraft/itematic/component/type/WeaponAttackDamageDataComponent.java @@ -11,11 +11,9 @@ import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.codec.PacketCodecs; import net.minecraft.predicate.item.ItemPredicate; -import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryCodecs; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntryList; -import net.minecraft.registry.tag.TagKey; import java.util.List; import java.util.Optional; @@ -37,6 +35,7 @@ public double getDamage(ItemStack stack, Entity entity) { return rule.damage.get(); } } + return this.defaultDamage; } @@ -46,7 +45,8 @@ public boolean shouldAddBase(ItemStack stack, Entity entity) { return rule.addBase.get(); } } - return false; + + return true; } public record Rule(Optional>> entities, Optional item, Optional damage, Optional addBase) { @@ -64,15 +64,6 @@ public record Rule(Optional>> entities, Optional Rule::new ); - public static Rule addsToBase(TagKey> entityTypes, double damage) { - return new Rule( - Optional.ofNullable(Registries.ENTITY_TYPE.getOrCreateEntryList(entityTypes)), - Optional.empty(), - Optional.of(damage), - Optional.of(true) - ); - } - @SuppressWarnings("deprecation") public boolean matches(ItemStack stack, Entity entity) { if (this.entities.isPresent() && !this.entities.get().contains(entity.getType().getRegistryEntry())) { diff --git a/src/main/java/net/errorcraft/itematic/entity/ItematicEntityTypeTags.java b/src/main/java/net/errorcraft/itematic/entity/ItematicEntityTypeTags.java deleted file mode 100644 index bf9dfded..00000000 --- a/src/main/java/net/errorcraft/itematic/entity/ItematicEntityTypeTags.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.errorcraft.itematic.entity; - -import net.minecraft.entity.EntityType; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; - -public class ItematicEntityTypeTags { - public static final TagKey> PROFICIENT_WITH_GOLDEN_WEAPONS = of("proficient_with_golden_weapons"); - - private ItematicEntityTypeTags() {} - - private static TagKey> of(String id) { - return TagKey.of(RegistryKeys.ENTITY_TYPE, Identifier.ofVanilla(id)); - } -} diff --git a/src/main/java/net/errorcraft/itematic/entity/effect/StatusEffectKeys.java b/src/main/java/net/errorcraft/itematic/entity/effect/StatusEffectKeys.java index d0ab3050..f6799c94 100644 --- a/src/main/java/net/errorcraft/itematic/entity/effect/StatusEffectKeys.java +++ b/src/main/java/net/errorcraft/itematic/entity/effect/StatusEffectKeys.java @@ -6,16 +6,19 @@ import net.minecraft.util.Identifier; public class StatusEffectKeys { - public static final RegistryKey JUMP_BOOST = of("jump_boost"); - public static final RegistryKey REGENERATION = of("regeneration"); - public static final RegistryKey FIRE_RESISTANCE = of("fire_resistance"); + public static final RegistryKey ABSORPTION = of("absorption"); public static final RegistryKey BLINDNESS = of("blindness"); + public static final RegistryKey FIRE_RESISTANCE = of("fire_resistance"); + public static final RegistryKey HUNGER = of("hunger"); + public static final RegistryKey JUMP_BOOST = of("jump_boost"); + public static final RegistryKey NAUSEA = of("nausea"); public static final RegistryKey NIGHT_VISION = of("night_vision"); - public static final RegistryKey WEAKNESS = of("weakness"); public static final RegistryKey POISON = of("poison"); - public static final RegistryKey WITHER = of("wither"); - public static final RegistryKey ABSORPTION = of("absorption"); + public static final RegistryKey REGENERATION = of("regeneration"); + public static final RegistryKey RESISTANCE = of("resistance"); public static final RegistryKey SATURATION = of("saturation"); + public static final RegistryKey WEAKNESS = of("weakness"); + public static final RegistryKey WITHER = of("wither"); private static RegistryKey of(String id) { return RegistryKey.of(RegistryKeys.STATUS_EFFECT, Identifier.ofVanilla(id)); diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/EntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/EntityInitializer.java index 3e84049a..a0f2a824 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/EntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/EntityInitializer.java @@ -4,10 +4,11 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.registry.Registries; public interface EntityInitializer { Codec> CODEC = Registries.ENTITY_TYPE.getCodec().dispatch(EntityInitializer::type, EntityType::itematic$initializerCodec); EntityType type(); - T create(ActionContext context); + T create(ActionContext context, SpawnReason reason); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ArmorStandEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ArmorStandEntityInitializer.java index 6b4130dc..30270ca8 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ArmorStandEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ArmorStandEntityInitializer.java @@ -6,6 +6,7 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; @@ -27,7 +28,7 @@ public EntityType type() { } @Override - public ArmorStandEntity create(ActionContext context) { + public ArmorStandEntity create(ActionContext context, SpawnReason reason) { if (!mayCreate(context)) { return null; } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java index df84e89c..61cb83ef 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java @@ -6,6 +6,7 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.util.StringIdentifiable; import net.minecraft.util.math.BlockPos; @@ -22,7 +23,7 @@ public EntityType type() { } @Override - public BoatEntity create(ActionContext context) { + public BoatEntity create(ActionContext context, SpawnReason reason) { return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET)); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java index be5b5cb0..d9a6c6e2 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java @@ -6,6 +6,7 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.entity.vehicle.ChestBoatEntity; import net.minecraft.util.StringIdentifiable; @@ -23,7 +24,7 @@ public EntityType type() { } @Override - public ChestBoatEntity create(ActionContext context) { + public ChestBoatEntity create(ActionContext context, SpawnReason reason) { return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET)); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/DecorationEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/DecorationEntityInitializer.java index fdddd91c..e2baccac 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/DecorationEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/DecorationEntityInitializer.java @@ -6,6 +6,7 @@ import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.NbtComponent; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.decoration.AbstractDecorationEntity; import net.minecraft.entity.decoration.ItemFrameEntity; import net.minecraft.entity.decoration.painting.PaintingEntity; @@ -19,7 +20,7 @@ public record DecorationEntityInitializer(EntityType type, Creator creator, PlacementChecker checker) implements EntityInitializer { @Override - public T create(ActionContext context) { + public T create(ActionContext context, SpawnReason reason) { Direction side = context.side(); return this.create(context.world(), context.player(ActionContextParameter.THIS).orElse(null), context.blockPos(ActionContextParameter.TARGET), side, context.stack()); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EndCrystalEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EndCrystalEntityInitializer.java index 29575dd4..9bab7bc7 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EndCrystalEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EndCrystalEntityInitializer.java @@ -7,6 +7,7 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.boss.dragon.EnderDragonFight; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.server.world.ServerWorld; @@ -27,7 +28,7 @@ public EntityType type() { } @Override - public EndCrystalEntity create(ActionContext context) { + public EndCrystalEntity create(ActionContext context, SpawnReason reason) { ServerWorld world = context.world(); BlockPos pos = context.blockPos(ActionContextParameter.TARGET); if (!world.getBlockState(pos.down()).isIn(ItematicBlockTags.END_CRYSTAL_SPAWNABLE_ON)) { diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EyeOfEnderEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EyeOfEnderEntityInitializer.java index 531963c8..213177b4 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EyeOfEnderEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/EyeOfEnderEntityInitializer.java @@ -8,6 +8,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.EyeOfEnderEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.item.ItemStack; import net.minecraft.registry.tag.StructureTags; import net.minecraft.server.network.ServerPlayerEntity; @@ -26,7 +27,7 @@ public EntityType type() { } @Override - public EyeOfEnderEntity create(ActionContext context) { + public EyeOfEnderEntity create(ActionContext context, SpawnReason reason) { ServerWorld world = context.world(); BlockPos blockPos = this.getBlockPos(context); BlockPos strongholdPos = world.locateStructure(StructureTags.EYE_OF_ENDER_LOCATED, blockPos, 100, false); diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/FireworkRocketEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/FireworkRocketEntityInitializer.java index 59e44dc7..c661838c 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/FireworkRocketEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/FireworkRocketEntityInitializer.java @@ -5,6 +5,7 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.projectile.FireworkRocketEntity; import net.minecraft.util.math.Vec3d; @@ -18,7 +19,7 @@ public EntityType type() { } @Override - public FireworkRocketEntity create(ActionContext context) { + public FireworkRocketEntity create(ActionContext context, SpawnReason reason) { Vec3d pos = context.position(ActionContextParameter.TARGET); return new FireworkRocketEntity(context.world(), pos.getX(), pos.getY(), pos.getZ(), context.stack().copyWithCount(1)); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java index a6f25e6b..2cd31060 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.block.enums.RailShape; import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.item.ItemStack; import net.minecraft.registry.tag.BlockTags; @@ -19,7 +20,7 @@ public record MinecartEntityInitializer(EntityType type, Creator creator) implements EntityInitializer { @Override - public T create(ActionContext context) { + public T create(ActionContext context, SpawnReason reason) { return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET), context.stack()); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java index 080d1107..57d450da 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java @@ -6,6 +6,7 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.projectile.PersistentProjectileEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.math.Vec3d; @@ -14,13 +15,18 @@ public record PersistentProjectileEntityInitializer(EntityType type, OwnerCreator ownerCreator, SimpleCreator simpleCreator) implements EntityInitializer { @Override - public T create(ActionContext context) { + public T create(ActionContext context, SpawnReason reason) { if (context.entity(ActionContextParameter.THIS).orElse(null) instanceof LivingEntity entity) { + ItemStack shooter = entity.getActiveItem(); + if (shooter.isEmpty()) { + shooter = null; + } + return this.ownerCreator.create( context.world(), entity, context.stack().copyWithCount(1), - entity.getActiveItem() + shooter ); } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SimpleEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SimpleEntityInitializer.java index ffcfdeb5..41410680 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SimpleEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SimpleEntityInitializer.java @@ -5,6 +5,7 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; public record SimpleEntityInitializer(EntityType type) implements EntityInitializer { public static SimpleEntityInitializer of(EntityType type) { @@ -12,8 +13,8 @@ public static SimpleEntityInitializer of(EntityType typ } @Override - public T create(ActionContext context) { - return this.type.create(context.world()); + public T create(ActionContext context, SpawnReason reason) { + return this.type.create(context.world(), reason); } public static MapCodec> createCodec(EntityType type) { diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SmallFireballEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SmallFireballEntityInitializer.java index 8dec1a12..369cf38e 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SmallFireballEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/SmallFireballEntityInitializer.java @@ -6,6 +6,7 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.projectile.SmallFireballEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Direction; @@ -23,7 +24,7 @@ public EntityType type() { } @Override - public SmallFireballEntity create(ActionContext context) { + public SmallFireballEntity create(ActionContext context, SpawnReason reason) { ServerWorld world = context.world(); Random random = world.getRandom(); Direction direction = context.side(); diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java index cb02db9d..c8829ba3 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.projectile.PersistentProjectileEntity; import net.minecraft.entity.projectile.TridentEntity; import net.minecraft.item.ItemStack; @@ -24,7 +25,7 @@ public EntityType type() { } @Override - public TridentEntity create(ActionContext context) { + public TridentEntity create(ActionContext context, SpawnReason reason) { ItemStack stack = context.stack(); LivingEntity user = context.livingEntity(ActionContextParameter.THIS).orElse(null); float spinAttackStrength = user != null ? diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/WindChargeEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/WindChargeEntityInitializer.java index 7a35bf88..82b605ad 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/WindChargeEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/WindChargeEntityInitializer.java @@ -5,6 +5,7 @@ import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.WindChargeEntity; import net.minecraft.server.world.ServerWorld; @@ -26,7 +27,7 @@ public EntityType type() { } @Override - public WindChargeEntity create(ActionContext context) { + public WindChargeEntity create(ActionContext context, SpawnReason reason) { ServerWorld world = context.world(); PlayerEntity user = context.player(ActionContextParameter.THIS).orElse(null); if (user != null) { diff --git a/src/main/java/net/errorcraft/itematic/item/ItemKeys.java b/src/main/java/net/errorcraft/itematic/item/ItemKeys.java index 217ac104..593379da 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemKeys.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemKeys.java @@ -1209,6 +1209,8 @@ public class ItemKeys { public static final RegistryKey PIGLIN_BANNER_PATTERN = register("piglin_banner_pattern"); public static final RegistryKey FLOW_BANNER_PATTERN = register("flow_banner_pattern"); public static final RegistryKey GUSTER_BANNER_PATTERN = register("guster_banner_pattern"); + public static final RegistryKey FIELD_MASONED_BANNER_PATTERN = register("field_masoned_banner_pattern"); + public static final RegistryKey BORDURE_INDENTED_BANNER_PATTERN = register("bordure_indented_banner_pattern"); public static final RegistryKey GOAT_HORN = register("goat_horn"); public static final RegistryKey COMPOSTER = register("composter"); public static final RegistryKey BARREL = register("barrel"); diff --git a/src/main/java/net/errorcraft/itematic/item/ItemResult.java b/src/main/java/net/errorcraft/itematic/item/ItemResult.java new file mode 100644 index 00000000..42e8f3d3 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/item/ItemResult.java @@ -0,0 +1,74 @@ +package net.errorcraft.itematic.item; + +import net.minecraft.util.ActionResult; + +public interface ItemResult { + ItemResult PASS = new Pass(); + ItemResult CONSUME = new Consume(); + ItemResult SUCCEED = new Success(); + + ItemResult max(ItemResult other); + ActionResult toActionResult(); + boolean succeeds(); + + class Pass implements ItemResult { + private Pass() {} + + @Override + public ItemResult max(ItemResult other) { + return other; + } + + @Override + public ActionResult toActionResult() { + return ActionResult.PASS; + } + + @Override + public boolean succeeds() { + return false; + } + } + + class Consume implements ItemResult { + private Consume() {} + + @Override + public ItemResult max(ItemResult other) { + if (other == SUCCEED) { + return SUCCEED; + } + + return this; + } + + @Override + public ActionResult toActionResult() { + return ActionResult.CONSUME; + } + + @Override + public boolean succeeds() { + return true; + } + } + + class Success implements ItemResult { + private Success() {} + + @Override + public ItemResult max(ItemResult other) { + return this; + } + + @Override + public ActionResult toActionResult() { + return ActionResult.SUCCESS; + } + + @Override + public boolean succeeds() { + return true; + } + } +} diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index 52acf641..d52b950c 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -7,7 +7,6 @@ import net.errorcraft.itematic.block.entity.FurnaceBlockEntityUtil; import net.errorcraft.itematic.component.type.ItemDamageRulesDataComponent; import net.errorcraft.itematic.entity.EntityTypeKeys; -import net.errorcraft.itematic.entity.ItematicEntityTypeTags; import net.errorcraft.itematic.entity.effect.StatusEffectKeys; import net.errorcraft.itematic.entity.initializer.initializers.*; import net.errorcraft.itematic.fluid.FluidKeys; @@ -33,7 +32,10 @@ import net.errorcraft.itematic.item.smithing.template.SmithingTemplates; import net.errorcraft.itematic.loot.predicate.SideCheckPredicate; import net.errorcraft.itematic.mixin.component.type.BundleContentsComponentAccessor; -import net.errorcraft.itematic.mixin.item.*; +import net.errorcraft.itematic.mixin.item.ArmorMaterialsAccessor; +import net.errorcraft.itematic.mixin.item.BrushItemAccessor; +import net.errorcraft.itematic.mixin.item.CrossbowItemAccessor; +import net.errorcraft.itematic.mixin.item.WindChargeItemAccessor; import net.errorcraft.itematic.potion.PotionKeys; import net.errorcraft.itematic.registry.ItematicRegistryKeys; import net.errorcraft.itematic.sound.SoundEventKeys; @@ -48,7 +50,6 @@ import net.errorcraft.itematic.world.action.sequence.handler.handlers.PassingSequenceHandler; import net.errorcraft.itematic.world.action.sequence.handler.handlers.UncheckedSequenceHandler; import net.minecraft.block.Block; -import net.minecraft.block.Blocks; import net.minecraft.block.DecoratedPotPattern; import net.minecraft.block.DecoratedPotPatterns; import net.minecraft.block.jukebox.JukeboxSong; @@ -69,6 +70,7 @@ import net.minecraft.entity.vehicle.*; import net.minecraft.fluid.Fluid; import net.minecraft.item.*; +import net.minecraft.item.consume.UseAction; import net.minecraft.loot.condition.*; import net.minecraft.loot.context.LootContext; import net.minecraft.particle.ParticleTypes; @@ -86,7 +88,10 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.state.property.Properties; -import net.minecraft.util.*; +import net.minecraft.util.DyeColor; +import net.minecraft.util.Identifier; +import net.minecraft.util.Rarity; +import net.minecraft.util.Util; import net.minecraft.util.math.Direction; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeKeys; @@ -193,13 +198,9 @@ private void bootstrapConsumables() { ItemBase.Builder.forItem(ItemKeys.MILK_BUCKET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(MilkBucketItemAccessor.getMaxUseTime()) - .useAnimation(UseAction.DRINK) - .resultItem(this.items.getOrThrow(ItemKeys.BUCKET)) - .noConsumeParticles() - .consumeSound(this.soundEvents.getOrThrow(SoundEventKeys.GENERIC_DRINK)) + .with(ConsumableItemComponent.builder(ConsumableComponents.MILK_BUCKET) + .remainder(this.items.getOrThrow(ItemKeys.BUCKET)) .build()) - .with(RecipeRemainderItemComponent.of(this.items.getOrThrow(ItemKeys.BUCKET))) .build(), ItemEventMap.builder() .add(ItemEvents.CONSUME_ITEM, ActionEntry.of(ClearStatusEffectsAction.of(ActionContextParameter.THIS))) @@ -209,11 +210,8 @@ private void bootstrapConsumables() { ItemBase.Builder.forItem(ItemKeys.POTION).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(PotionItemAccessor.getMaxUseTime()) - .useAnimation(UseAction.DRINK) - .resultItem(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE)) - .noConsumeParticles() - .consumeSound(this.soundEvents.getOrThrow(SoundEventKeys.GENERIC_DRINK)) + .with(ConsumableItemComponent.builder(ConsumableComponents.DRINK) + .remainder(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE)) .build()) .with(PotionItemComponent.INSTANCE) .with(PotionHolderItemComponent.of(1.0f)) @@ -231,7 +229,7 @@ private void bootstrapConsumables() { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .tag(BlockTags.CONVERTABLE_TO_MUD)) + .tag(this.blocks, BlockTags.CONVERTABLE_TO_MUD)) ), MatchToolLootCondition.builder( ItemPredicate.Builder.create() @@ -265,11 +263,7 @@ private void bootstrapConsumables() { .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(OminousBottleItemAccessor.useDuration()) - .useAnimation(UseAction.DRINK) - .noConsumeParticles() - .consumeSound(this.soundEvents.getOrThrow(SoundEventKeys.GENERIC_DRINK)) - .build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.OMINOUS_BOTTLE).build()) .with(OminousEffectProviderItemComponent.INSTANCE) .build(), ItemEventMap.builder() @@ -283,7 +277,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.APPLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.APPLE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.APPLE) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) .build() )); @@ -291,7 +287,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.MELON_SLICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.MELON_SLICE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.MELON_SLICE) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.HALF_CHANCE_TO_COMPOST)) .build() )); @@ -299,7 +297,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.DRIED_KELP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.DRIED_KELP).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.DRIED_KELP) + .food(FoodComponents.DRIED_KELP) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.SMALL_CHANCE_TO_COMPOST)) .build() )); @@ -307,7 +307,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.CARROT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.CARROT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.CARROT) + .build()) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CARROTS))) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) .build() @@ -316,7 +318,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.POTATO).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.POTATO) + .build()) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POTATOES))) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) .build() @@ -325,7 +329,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.BAKED_POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.BAKED_POTATO).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.BAKED_POTATO) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.ALMOST_GUARANTEED_TO_COMPOST)) .build() )); @@ -333,7 +339,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.CHORUS_FRUIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.CHORUS_FRUIT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.CHORUS_FRUIT) + .build()) .build(), ItemEventMap.builder() .add(ItemEvents.CONSUME_ITEM, ActionEntry.of(TeleportAction.of(16, ActionContextParameter.THIS))) @@ -343,7 +351,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.BEETROOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.BEETROOT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.BEETROOT) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) .build() )); @@ -351,7 +361,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.SWEET_BERRIES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.SWEET_BERRIES).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.SWEET_BERRIES) + .build()) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SWEET_BERRY_BUSH))) .with(CompostableItemComponent.of(ComposterBlockUtil.SMALL_CHANCE_TO_COMPOST)) .build() @@ -360,7 +372,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.GLOW_BERRIES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.GLOW_BERRIES).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.GLOW_BERRIES) + .build()) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CAVE_VINES))) .with(CompostableItemComponent.of(ComposterBlockUtil.SMALL_CHANCE_TO_COMPOST)) .build() @@ -369,7 +383,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.BREAD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.BREAD).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.BREAD) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.ALMOST_GUARANTEED_TO_COMPOST)) .build() )); @@ -377,135 +393,183 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.COOKIE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKIE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKIE) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.ALMOST_GUARANTEED_TO_COMPOST)) .build() )); - this.registerable.register(ItemKeys.CRAFTER, create( - ItemBase.Builder.forBlock(ItemKeys.CRAFTER).build(), - ItemComponentSet.builder() - .with(StackableItemComponent.of(64)) - .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRAFTER))) - .build() - )); this.registerable.register(ItemKeys.PORKCHOP, create( ItemBase.Builder.forItem(ItemKeys.PORKCHOP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.PORKCHOP).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.PORKCHOP) + .build()) .build() )); this.registerable.register(ItemKeys.COOKED_PORKCHOP, create( ItemBase.Builder.forItem(ItemKeys.COOKED_PORKCHOP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_PORKCHOP).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_PORKCHOP) + .build()) .build() )); this.registerable.register(ItemKeys.BEEF, create( ItemBase.Builder.forItem(ItemKeys.BEEF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.BEEF).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.BEEF) + .build()) .build() )); this.registerable.register(ItemKeys.COOKED_BEEF, create( ItemBase.Builder.forItem(ItemKeys.COOKED_BEEF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_BEEF).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_BEEF) + .build()) .build() )); this.registerable.register(ItemKeys.CHICKEN, create( ItemBase.Builder.forItem(ItemKeys.CHICKEN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.CHICKEN).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.CHICKEN) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + ActionRequirements.of( + ActionContextParameters.of(ActionContextParameter.THIS, ActionContextParameter.THIS), + RandomChanceLootCondition.builder(0.3f).build() + ), + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.POISON), 600) + ) + )) .build() )); this.registerable.register(ItemKeys.COOKED_CHICKEN, create( ItemBase.Builder.forItem(ItemKeys.COOKED_CHICKEN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_CHICKEN).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_CHICKEN) + .build()) .build() )); this.registerable.register(ItemKeys.RABBIT, create( ItemBase.Builder.forItem(ItemKeys.RABBIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.RABBIT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.RABBIT) + .build()) .build() )); this.registerable.register(ItemKeys.COOKED_RABBIT, create( ItemBase.Builder.forItem(ItemKeys.COOKED_RABBIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_RABBIT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_RABBIT) + .build()) .build() )); this.registerable.register(ItemKeys.MUTTON, create( ItemBase.Builder.forItem(ItemKeys.MUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.MUTTON).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.MUTTON) + .build()) .build() )); this.registerable.register(ItemKeys.COOKED_MUTTON, create( ItemBase.Builder.forItem(ItemKeys.COOKED_MUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_MUTTON).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_MUTTON) + .build()) .build() )); this.registerable.register(ItemKeys.COD, create( ItemBase.Builder.forItem(ItemKeys.COD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COD).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COD) + .build()) .build() )); this.registerable.register(ItemKeys.SALMON, create( ItemBase.Builder.forItem(ItemKeys.SALMON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.SALMON).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.SALMON) + .build()) .build() )); this.registerable.register(ItemKeys.TROPICAL_FISH, create( ItemBase.Builder.forItem(ItemKeys.TROPICAL_FISH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.TROPICAL_FISH).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.TROPICAL_FISH) + .build()) .build() )); this.registerable.register(ItemKeys.PUFFERFISH, create( ItemBase.Builder.forItem(ItemKeys.PUFFERFISH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.PUFFERFISH).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.PUFFERFISH) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.POISON), 1200, 1), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.HUNGER), 300, 2), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.NAUSEA), 300) + ) + )) .build() )); this.registerable.register(ItemKeys.COOKED_COD, create( ItemBase.Builder.forItem(ItemKeys.COOKED_COD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_COD).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_COD) + .build()) .build() )); this.registerable.register(ItemKeys.COOKED_SALMON, create( ItemBase.Builder.forItem(ItemKeys.COOKED_SALMON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.COOKED_SALMON).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.COOKED_SALMON) + .build()) .build() )); this.registerable.register(ItemKeys.MUSHROOM_STEW, create( ItemBase.Builder.forItem(ItemKeys.MUSHROOM_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(FoodComponents.MUSHROOM_STEW) - .resultItem(this.items.getOrThrow(ItemKeys.BOWL)) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.MUSHROOM_STEW) + .remainder(this.items.getOrThrow(ItemKeys.BOWL)) .build()) .build() )); @@ -513,8 +577,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.RABBIT_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(FoodComponents.RABBIT_STEW) - .resultItem(this.items.getOrThrow(ItemKeys.BOWL)) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.RABBIT_STEW) + .remainder(this.items.getOrThrow(ItemKeys.BOWL)) .build()) .build() )); @@ -522,8 +587,9 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.BEETROOT_SOUP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(FoodComponents.BEETROOT_SOUP) - .resultItem(this.items.getOrThrow(ItemKeys.BOWL)) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.BEETROOT_SOUP) + .remainder(this.items.getOrThrow(ItemKeys.BOWL)) .build()) .build() )); @@ -531,70 +597,126 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.SUSPICIOUS_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(ConsumableItemComponent.builder(FoodComponents.SUSPICIOUS_STEW) - .resultItem(this.items.getOrThrow(ItemKeys.BOWL)) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.SUSPICIOUS_STEW) + .remainder(this.items.getOrThrow(ItemKeys.BOWL)) .build()) .build(), ItemEventMap.builder() - .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( - PassingSequenceHandler.builder() - .add(ApplySuspiciousStewEffectsFromItemAction.of(ActionContextParameter.THIS)) - .add(ExchangeItemAction.of(this.items.getOrThrow(ItemKeys.BOWL))) - )) + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of(ApplySuspiciousStewEffectsFromItemAction.of(ActionContextParameter.THIS))) .build() )); this.registerable.register(ItemKeys.ROTTEN_FLESH, create( ItemBase.Builder.forItem(ItemKeys.ROTTEN_FLESH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.ROTTEN_FLESH).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.ROTTEN_FLESH) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + ActionRequirements.of( + ActionContextParameters.of(ActionContextParameter.THIS, ActionContextParameter.THIS), + RandomChanceLootCondition.builder(0.8f).build() + ), + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.HUNGER), 600) + ) + )) .build() )); this.registerable.register(ItemKeys.SPIDER_EYE, create( ItemBase.Builder.forItem(ItemKeys.SPIDER_EYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.SPIDER_EYE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.SPIDER_EYE) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.POISON), 100) + ) + )) .build() )); this.registerable.register(ItemKeys.POISONOUS_POTATO, create( ItemBase.Builder.forItem(ItemKeys.POISONOUS_POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.POISONOUS_POTATO).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.POISONOUS_POTATO) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + ActionRequirements.of( + ActionContextParameters.of(ActionContextParameter.THIS, ActionContextParameter.THIS), + RandomChanceLootCondition.builder(0.6f).build() + ), + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.POISON), 100) + ) + )) .build() )); this.registerable.register(ItemKeys.GOLDEN_APPLE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_APPLE) - .rarity(Rarity.RARE) - .build(), + ItemBase.Builder.forItem(ItemKeys.GOLDEN_APPLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.GOLDEN_APPLE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.GOLDEN_APPLE) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.REGENERATION), 100, 1), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.ABSORPTION), 2400) + ) + )) .build() )); this.registerable.register(ItemKeys.ENCHANTED_GOLDEN_APPLE, create( ItemBase.Builder.forItem(ItemKeys.ENCHANTED_GOLDEN_APPLE) - .rarity(Rarity.EPIC) + .rarity(Rarity.RARE) .glint() .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.ENCHANTED_GOLDEN_APPLE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.ENCHANTED_GOLDEN_APPLE) + .build()) + .build(), + ItemEventMap.builder() + .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.REGENERATION), 400, 1), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.RESISTANCE), 6000), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.FIRE_RESISTANCE), 6000), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.ABSORPTION), 2400) + ) + )) .build() )); this.registerable.register(ItemKeys.GOLDEN_CARROT, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_CARROT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.GOLDEN_CARROT).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.GOLDEN_CARROT) + .build()) .build() )); this.registerable.register(ItemKeys.PUMPKIN_PIE, create( ItemBase.Builder.forItem(ItemKeys.PUMPKIN_PIE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(ConsumableItemComponent.builder(FoodComponents.PUMPKIN_PIE).build()) + .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) + .food(FoodComponents.PUMPKIN_PIE) + .build()) .with(CompostableItemComponent.of(ComposterBlockUtil.GUARANTEED_TO_COMPOST)) .build() )); @@ -602,14 +724,13 @@ private void bootstrapFood() { ItemBase.Builder.forItem(ItemKeys.HONEY_BOTTLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) - .with(ConsumableItemComponent.builder(HoneyBottleItemAccessor.useDuration()) + .with(ConsumableItemComponent.builder(ConsumableComponents.HONEY_BOTTLE) .food(FoodComponents.HONEY_BOTTLE) .useAnimation(UseAction.DRINK) - .resultItem(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE)) + .remainder(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE)) .noConsumeParticles() .consumeSound(this.soundEvents.getOrThrow(SoundEventKeys.HONEY_BOTTLE_DRINK)) .build()) - .with(RecipeRemainderItemComponent.of(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE))) .build(), ItemEventMap.builder() .add(ItemEvents.CONSUME_ITEM, ActionEntry.of( @@ -2574,7 +2695,9 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.SNIFFER_EGG, create( - ItemBase.Builder.forBlock(ItemKeys.SNIFFER_EGG).build(), + ItemBase.Builder.forBlock(ItemKeys.SNIFFER_EGG) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SNIFFER_EGG))) @@ -3787,6 +3910,13 @@ private void bootstrapBlocks() { .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.VAULT))) .build() )); + this.registerable.register(ItemKeys.CRAFTER, create( + ItemBase.Builder.forBlock(ItemKeys.CRAFTER).build(), + ItemComponentSet.builder() + .with(StackableItemComponent.of(64)) + .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRAFTER))) + .build() + )); } private void bootstrapAttachedToSideBlocks() { @@ -5019,14 +5149,14 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.WOODEN_SWORD, create( ItemBase.Builder.forItem(ItemKeys.WOODEN_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.WOOD, ItematicItemTags.REPAIRS_WOODEN_TOOL)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.WOODEN_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.WOOD, ItematicItemTags.REPAIRS_WOODEN_TOOL)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build(), ItemEventMap.builder() @@ -5036,21 +5166,21 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.WOODEN_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.WOODEN_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.WOOD, ItematicItemTags.REPAIRS_WOODEN_TOOL)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_AXE, create( ItemBase.Builder.forItem(ItemKeys.WOODEN_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.WOOD, 7.0d, 0.2d, ItematicItemTags.REPAIRS_WOODEN_TOOL)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.WOOD, 7.0d, 0.2d, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_HOE, create( ItemBase.Builder.forItem(ItemKeys.WOODEN_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.WOOD, 1.0d, 0.25d, ItematicItemTags.REPAIRS_WOODEN_TOOL)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.WOOD, 1.0d, 0.25d, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build(), ItemEventMap.builder() @@ -5060,13 +5190,13 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.STONE_SWORD, create( ItemBase.Builder.forItem(ItemKeys.STONE_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.STONE, ItematicItemTags.REPAIRS_STONE_TOOL)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.STONE_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.STONE, ItematicItemTags.REPAIRS_STONE_TOOL)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_SHOVEL_ON_BLOCK)) @@ -5075,19 +5205,19 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.STONE_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.STONE_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.STONE, ItematicItemTags.REPAIRS_STONE_TOOL)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_AXE, create( ItemBase.Builder.forItem(ItemKeys.STONE_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.STONE, 8.0d, 0.2d, ItematicItemTags.REPAIRS_STONE_TOOL)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.STONE, 8.0d, 0.2d, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_HOE, create( ItemBase.Builder.forItem(ItemKeys.STONE_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.STONE, 2.0d, 0.5d, ItematicItemTags.REPAIRS_STONE_TOOL)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.STONE, 2.0d, 0.5d, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_HOE_ON_BLOCK)) @@ -5096,13 +5226,13 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.GOLDEN_SWORD, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.GOLD, ItematicItemTags.REPAIRS_GOLDEN_TOOL, ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.GOLD, ItematicItemTags.REPAIRS_GOLDEN_TOOL, ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_SHOVEL_ON_BLOCK)) @@ -5111,19 +5241,19 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.GOLDEN_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.GOLD, ItematicItemTags.REPAIRS_GOLDEN_TOOL, ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_AXE, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.GOLD, 7.0d, 0.25d, ItematicItemTags.REPAIRS_GOLDEN_TOOL, ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.GOLD, 7.0d, 0.25d, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_HOE, create( ItemBase.Builder.forItem(ItemKeys.GOLDEN_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.GOLD, 1.0d, 0.25d, ItematicItemTags.REPAIRS_GOLDEN_TOOL, ItematicEntityTypeTags.PROFICIENT_WITH_GOLDEN_WEAPONS)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.GOLD, 1.0d, 0.25d, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_HOE_ON_BLOCK)) @@ -5132,13 +5262,13 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.IRON_SWORD, create( ItemBase.Builder.forItem(ItemKeys.IRON_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.IRON, ItematicItemTags.REPAIRS_IRON_TOOL)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.IRON_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.IRON, ItematicItemTags.REPAIRS_IRON_TOOL)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_SHOVEL_ON_BLOCK)) @@ -5147,19 +5277,19 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.IRON_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.IRON_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.IRON, ItematicItemTags.REPAIRS_IRON_TOOL)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_AXE, create( ItemBase.Builder.forItem(ItemKeys.IRON_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.IRON, 7.0d, 0.225d, ItematicItemTags.REPAIRS_IRON_TOOL)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.IRON, 7.0d, 0.225d, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_HOE, create( ItemBase.Builder.forItem(ItemKeys.IRON_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.IRON, 3.0d, 0.75d, ItematicItemTags.REPAIRS_IRON_TOOL)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.IRON, 3.0d, 0.75d, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_HOE_ON_BLOCK)) @@ -5168,13 +5298,13 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.DIAMOND_SWORD, create( ItemBase.Builder.forItem(ItemKeys.DIAMOND_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.DIAMOND, ItematicItemTags.REPAIRS_DIAMOND_TOOL)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.DIAMOND_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.DIAMOND, ItematicItemTags.REPAIRS_DIAMOND_TOOL)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_SHOVEL_ON_BLOCK)) @@ -5183,19 +5313,19 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.DIAMOND_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.DIAMOND_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.DIAMOND, ItematicItemTags.REPAIRS_DIAMOND_TOOL)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_AXE, create( ItemBase.Builder.forItem(ItemKeys.DIAMOND_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.DIAMOND, 6.0d, 0.25d, ItematicItemTags.REPAIRS_DIAMOND_TOOL)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.DIAMOND, 6.0d, 0.25d, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_HOE, create( ItemBase.Builder.forItem(ItemKeys.DIAMOND_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.DIAMOND, 4.0d, 1.0d, ItematicItemTags.REPAIRS_DIAMOND_TOOL)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.DIAMOND, 4.0d, 1.0d, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build(), ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, this.actions.getOrThrow(Actions.USE_HOE_ON_BLOCK)) @@ -5204,14 +5334,14 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.NETHERITE_SWORD, create( ItemBase.Builder.forItem(ItemKeys.NETHERITE_SWORD).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.sword(ToolMaterials.NETHERITE, ItematicItemTags.REPAIRS_NETHERITE_TOOL)) + .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_SHOVEL, create( ItemBase.Builder.forItem(ItemKeys.NETHERITE_SHOVEL).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.shovel(ToolMaterials.NETHERITE, ItematicItemTags.REPAIRS_NETHERITE_TOOL)) + .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build(), ItemEventMap.builder() @@ -5221,21 +5351,21 @@ private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.NETHERITE_PICKAXE, create( ItemBase.Builder.forItem(ItemKeys.NETHERITE_PICKAXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.pickaxe(ToolMaterials.NETHERITE, ItematicItemTags.REPAIRS_NETHERITE_TOOL)) + .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_AXE, create( ItemBase.Builder.forItem(ItemKeys.NETHERITE_AXE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.axe(ToolMaterials.NETHERITE, 6.0d, 0.25d, ItematicItemTags.REPAIRS_NETHERITE_TOOL)) + .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.NETHERITE, 6.0d, 0.25d, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_HOE, create( ItemBase.Builder.forItem(ItemKeys.NETHERITE_HOE).build(), ItemComponentSet.builder() - .with(DamageableItemComponent.hoe(ToolMaterials.NETHERITE, 5.0d, 1.0d, ItematicItemTags.REPAIRS_NETHERITE_TOOL)) + .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.NETHERITE, 5.0d, 1.0d, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build(), ItemEventMap.builder() @@ -5256,10 +5386,10 @@ private void bootstrapToolsAndWeapons() { .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(238)) .with(ToolItemComponent.builder(1) - .rule(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0f)) - .rule(ToolComponent.Rule.of(BlockTags.LEAVES, 15.0f)) - .rule(ToolComponent.Rule.of(BlockTags.WOOL, 5.0f)) - .rule(ToolComponent.Rule.of(List.of(Blocks.VINE, Blocks.GLOW_LICHEN), 2.0f)) + .rule(ToolComponent.Rule.ofAlwaysDropping(RegistryEntryList.of(this.blocks.getOrThrow(BlockKeys.COBWEB)), 15.0f)) + .rule(ToolComponent.Rule.of(this.blocks.getOrThrow(BlockTags.LEAVES), 15.0f)) + .rule(ToolComponent.Rule.of(this.blocks.getOrThrow(BlockTags.WOOL), 5.0f)) + .rule(ToolComponent.Rule.of(RegistryEntryList.of(this.blocks.getOrThrow(BlockKeys.VINE), this.blocks.getOrThrow(BlockKeys.GLOW_LICHEN)), 2.0f)) .build()) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.SHEAR))) .build() @@ -5308,7 +5438,7 @@ private void bootstrapToolsAndWeapons() { )); this.registerable.register(ItemKeys.TRIDENT, create( ItemBase.Builder.forItem(ItemKeys.TRIDENT) - .rarity(Rarity.EPIC) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) @@ -5403,7 +5533,9 @@ private void bootstrapToolsAndWeapons() { .with(ToolItemComponent.builder(2).build()) .with(WeaponItemComponent.ofSmashing(1, 6.0d, 0.15d)) .with(EnchantableItemComponent.of(15)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_MACE)) + .with(RepairableItemComponent.of(RegistryEntryList.of( + this.items.getOrThrow(ItemKeys.BREEZE_ROD) + ))) .build() )); } @@ -5628,7 +5760,6 @@ private void bootstrapEntities() { )); this.registerable.register(ItemKeys.END_CRYSTAL, create( ItemBase.Builder.forItem(ItemKeys.END_CRYSTAL) - .rarity(Rarity.RARE) .glint() .build(), ItemComponentSet.builder() @@ -7085,13 +7216,15 @@ private void bootstrapEquipment() { this.bootstrapSkulls(); this.registerable.register(ItemKeys.ELYTRA, create( ItemBase.Builder.forItem(ItemKeys.ELYTRA) - .rarity(Rarity.UNCOMMON) + .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.ofPreserved(432)) .with(EquipmentItemComponent.of(EquipmentSlot.CHEST, true, this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_ELYTRA))) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_ELYTRA)) + .with(RepairableItemComponent.of(RegistryEntryList.of( + this.items.getOrThrow(ItemKeys.PHANTOM_MEMBRANE) + ))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7100,11 +7233,12 @@ private void bootstrapEquipment() { ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(UseableItemComponent.builder() + .useIndefinitely() .animation(UseAction.BLOCK) .build()) .with(DamageableItemComponent.of(336)) .with(EquipmentItemComponent.of(EquipmentSlot.OFFHAND, false, this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GENERIC))) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_SHIELD)) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(BannerPatternHolderItemComponent.of()) .build() @@ -7116,8 +7250,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.LEATHER_HELMET).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_LEATHER_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) .with(TintedItemComponent.of(DyeableItemColor.of(0))) @@ -7127,8 +7261,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.LEATHER_CHESTPLATE).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_LEATHER_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) .with(TintedItemComponent.of(DyeableItemColor.of(0))) @@ -7138,8 +7272,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.LEATHER_LEGGINGS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_LEATHER_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) .with(TintedItemComponent.of(DyeableItemColor.of(0))) @@ -7149,46 +7283,54 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.LEATHER_BOOTS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_LEATHER_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) .with(TintedItemComponent.of(DyeableItemColor.of(0))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_HELMET).build(), + ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_HELMET) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_CHESTPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_CHESTPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_LEGGINGS).build(), + ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_LEGGINGS) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_BOOTS).build(), + ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_BOOTS) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7196,8 +7338,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.IRON_HELMET).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_IRON_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7205,8 +7347,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.IRON_CHESTPLATE).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_IRON_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7214,8 +7356,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.IRON_LEGGINGS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_IRON_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7223,8 +7365,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.IRON_BOOTS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_IRON_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7232,8 +7374,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.DIAMOND_HELMET).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_DIAMOND_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7241,8 +7383,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.DIAMOND_CHESTPLATE).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_DIAMOND_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7250,8 +7392,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.DIAMOND_LEGGINGS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_DIAMOND_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7259,8 +7401,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.DIAMOND_BOOTS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_DIAMOND_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7268,8 +7410,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.GOLDEN_HELMET).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_GOLDEN_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7277,8 +7419,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.GOLDEN_CHESTPLATE).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_GOLDEN_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7286,8 +7428,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.GOLDEN_LEGGINGS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_GOLDEN_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7295,8 +7437,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.GOLDEN_BOOTS).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_GOLDEN_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7305,8 +7447,8 @@ private void bootstrapArmor() { ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_NETHERITE_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7315,8 +7457,8 @@ private void bootstrapArmor() { ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_NETHERITE_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7325,8 +7467,8 @@ private void bootstrapArmor() { ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_NETHERITE_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7335,8 +7477,8 @@ private void bootstrapArmor() { ItemComponentSet.builder() .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_NETHERITE_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7344,8 +7486,8 @@ private void bootstrapArmor() { ItemBase.Builder.forItem(ItemKeys.TURTLE_HELMET).build(), ItemComponentSet.builder() .with(ArmorItemComponent.of(275, EquipmentSlot.HEAD, this.armorMaterials.getOrThrow(ArmorMaterialKeys.TURTLE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_TURTLE))) - .with(EnchantableItemComponent.of(ArmorMaterials.TURTLE)) - .with(RepairableItemComponent.of(ItematicItemTags.REPAIRS_TURTLE_ARMOR)) + .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.turtleEnchantability())) + .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_TURTLE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -7437,7 +7579,7 @@ private void bootstrapSkulls() { )); this.registerable.register(ItemKeys.DRAGON_HEAD, create( ItemBase.Builder.forBlock(ItemKeys.DRAGON_HEAD) - .rarity(Rarity.UNCOMMON) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) @@ -9087,7 +9229,7 @@ private void bootstrapProjectiles() { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .blocks(this.blocks.getOrThrow(BlockKeys.END_PORTAL_FRAME).value()) + .blocks(this.blocks, this.blocks.getOrThrow(BlockKeys.END_PORTAL_FRAME).value()) .state(StatePredicate.Builder.create() .exactMatch(Properties.EYE, false)))) .build() @@ -9326,7 +9468,7 @@ private void bootstrapDyes() { private void bootstrapRecords() { this.registerable.register(ItemKeys.MUSIC_DISC_13, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_13) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.THIRTEEN))) @@ -9334,7 +9476,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_CAT, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CAT) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.CAT))) @@ -9342,7 +9484,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_BLOCKS, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_BLOCKS) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.BLOCKS))) @@ -9350,7 +9492,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_CHIRP, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CHIRP) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.CHIRP))) @@ -9358,7 +9500,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_CREATOR, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR) - .rarity(Rarity.EPIC) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.CREATOR))) @@ -9366,7 +9508,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_CREATOR_MUSIC_BOX, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR_MUSIC_BOX) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.CREATOR_MUSIC_BOX))) @@ -9375,7 +9517,7 @@ private void bootstrapRecords() { this.registerable.register(ItemKeys.MUSIC_DISC_FAR, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_FAR) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.FAR))) @@ -9383,7 +9525,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_MALL, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_MALL) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.MALL))) @@ -9391,7 +9533,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_MELLOHI, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_MELLOHI) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.MELLOHI))) @@ -9399,7 +9541,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_STAL, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_STAL) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.STAL))) @@ -9407,7 +9549,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_STRAD, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_STRAD) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.STRAD))) @@ -9415,7 +9557,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_WARD, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_WARD) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.WARD))) @@ -9423,7 +9565,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_11, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_11) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.ELEVEN))) @@ -9431,7 +9573,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_WAIT, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_WAIT) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.WAIT))) @@ -9439,7 +9581,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_OTHERSIDE, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_OTHERSIDE) - .rarity(Rarity.EPIC) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.OTHERSIDE))) @@ -9447,7 +9589,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_RELIC, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_RELIC) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.RELIC))) @@ -9455,7 +9597,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_PIGSTEP, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_PIGSTEP) - .rarity(Rarity.EPIC) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.PIGSTEP))) @@ -9463,7 +9605,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_PRECIPICE, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_PRECIPICE) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.PRECIPICE))) @@ -9471,14 +9613,17 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_5, create( ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_5) - .rarity(Rarity.EPIC) + .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(PlayableSongItemComponent.of(this.jukeboxSongs.getOrThrow(JukeboxSongs.FIVE))) .build() )); this.registerable.register(ItemKeys.DISC_FRAGMENT_5, create( - ItemBase.Builder.forItem(ItemKeys.DISC_FRAGMENT_5).tooltip(ItemKeys.DISC_FRAGMENT_5).build(), + ItemBase.Builder.forItem(ItemKeys.DISC_FRAGMENT_5) + .rarity(Rarity.UNCOMMON) + .tooltip(ItemKeys.DISC_FRAGMENT_5) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() @@ -9497,15 +9642,13 @@ private void bootstrapBuckets() { ItemBase.Builder.forItem(ItemKeys.WATER_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.fluid(this.fluids.getOrThrow(FluidKeys.WATER), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY), this.items, this.dispenseBehaviors)) - .with(RecipeRemainderItemComponent.of(this.items.getOrThrow(ItemKeys.BUCKET))) .build() )); this.registerable.register(ItemKeys.LAVA_BUCKET, create( ItemBase.Builder.forItem(ItemKeys.LAVA_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.fluid(this.fluids.getOrThrow(FluidKeys.LAVA), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_LAVA), this.items, this.dispenseBehaviors)) - .with(FuelItemComponent.of(FurnaceBlockEntityUtil.LAVA_FUEL_TIME)) - .with(RecipeRemainderItemComponent.of(this.items.getOrThrow(ItemKeys.BUCKET))) + .with(FuelItemComponent.of(FurnaceBlockEntityUtil.LAVA_FUEL_TIME, this.items.getOrThrow(ItemKeys.BUCKET))) .build() )); this.registerable.register(ItemKeys.POWDER_SNOW_BUCKET, create( @@ -9554,115 +9697,153 @@ private void bootstrapBuckets() { private void bootstrapSmithingTemplates() { this.registerable.register(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.NETHERITE_UPGRADE))) .build() )); this.registerable.register(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.SENTRY_PATTERN))) .build() )); this.registerable.register(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.DUNE_PATTERN))) .build() )); this.registerable.register(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.COAST_PATTERN))) .build() )); this.registerable.register(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.WILD_PATTERN))) .build() )); this.registerable.register(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.WARD_PATTERN))) .build() )); this.registerable.register(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.EYE_PATTERN))) .build() )); this.registerable.register(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.VEX_PATTERN))) .build() )); this.registerable.register(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.TIDE_PATTERN))) .build() )); this.registerable.register(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.SNOUT_PATTERN))) .build() )); this.registerable.register(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.RIB_PATTERN))) .build() )); this.registerable.register(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.SPIRE_PATTERN))) .build() )); this.registerable.register(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.WAYFINDER_PATTERN))) .build() )); this.registerable.register(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.SHAPER_PATTERN))) .build() )); this.registerable.register(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.EPIC) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.SILENCE_PATTERN))) .build() )); this.registerable.register(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.RAISER_PATTERN))) .build() )); this.registerable.register(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.HOST_PATTERN))) .build() )); this.registerable.register(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.FLOW_PATTERN))) .build() )); this.registerable.register(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE).build(), + ItemBase.Builder.forItem(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(SmithingTemplateItemComponent.of(this.smithingTemplates.getOrThrow(SmithingTemplates.BOLT_PATTERN))) .build() @@ -9819,9 +10000,7 @@ private void bootstrapBanners() { private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.FLOWER_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.FLOWER_BANNER_PATTERN) - .tooltip(ItemKeys.FLOWER_BANNER_PATTERN) - .build(), + ItemBase.Builder.forItem(ItemKeys.FLOWER_BANNER_PATTERN).build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.FLOWER_PATTERN_ITEM)) .build() @@ -9829,7 +10008,6 @@ private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.CREEPER_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.CREEPER_BANNER_PATTERN) .rarity(Rarity.UNCOMMON) - .tooltip(ItemKeys.CREEPER_BANNER_PATTERN) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.CREEPER_PATTERN_ITEM)) @@ -9837,8 +10015,7 @@ private void bootstrapBannerPatterns() { )); this.registerable.register(ItemKeys.SKULL_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.SKULL_BANNER_PATTERN) - .rarity(Rarity.UNCOMMON) - .tooltip(ItemKeys.SKULL_BANNER_PATTERN) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.SKULL_PATTERN_ITEM)) @@ -9846,17 +10023,14 @@ private void bootstrapBannerPatterns() { )); this.registerable.register(ItemKeys.MOJANG_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.MOJANG_BANNER_PATTERN) - .rarity(Rarity.EPIC) - .tooltip(ItemKeys.MOJANG_BANNER_PATTERN) + .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.MOJANG_PATTERN_ITEM)) .build() )); this.registerable.register(ItemKeys.GLOBE_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.GLOBE_BANNER_PATTERN) - .tooltip(ItemKeys.GLOBE_BANNER_PATTERN) - .build(), + ItemBase.Builder.forItem(ItemKeys.GLOBE_BANNER_PATTERN).build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.GLOBE_PATTERN_ITEM)) .build() @@ -9864,7 +10038,6 @@ private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.PIGLIN_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.PIGLIN_BANNER_PATTERN) .rarity(Rarity.UNCOMMON) - .tooltip(ItemKeys.PIGLIN_BANNER_PATTERN) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.PIGLIN_PATTERN_ITEM)) @@ -9873,7 +10046,6 @@ private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.FLOW_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.FLOW_BANNER_PATTERN) .rarity(Rarity.RARE) - .tooltip(ItemKeys.FLOW_BANNER_PATTERN) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.FLOW_PATTERN_ITEM)) @@ -9882,12 +10054,27 @@ private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.GUSTER_BANNER_PATTERN, create( ItemBase.Builder.forItem(ItemKeys.GUSTER_BANNER_PATTERN) .rarity(Rarity.RARE) - .tooltip(ItemKeys.GUSTER_BANNER_PATTERN) .build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.GUSTER_PATTERN_ITEM)) .build() )); + this.registerable.register(ItemKeys.FIELD_MASONED_BANNER_PATTERN, create( + ItemBase.Builder.forItem(ItemKeys.FIELD_MASONED_BANNER_PATTERN) + .rarity(Rarity.RARE) + .build(), + ItemComponentSet.builder() + .with(BannerPatternItemComponent.of(BannerPatternTags.FIELD_MASONED_PATTERN_ITEM)) + .build() + )); + this.registerable.register(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN, create( + ItemBase.Builder.forItem(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN) + .rarity(Rarity.RARE) + .build(), + ItemComponentSet.builder() + .with(BannerPatternItemComponent.of(BannerPatternTags.BORDURE_INDENTED_PATTERN_ITEM)) + .build() + )); } private void bootstrapDecoratedPotPatterns() { @@ -9899,139 +10086,185 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.ANGLER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ANGLER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.ANGLER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.ANGLER))) .build() )); this.registerable.register(ItemKeys.ARCHER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ARCHER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.ARCHER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.ARCHER))) .build() )); this.registerable.register(ItemKeys.ARMS_UP_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ARMS_UP_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.ARMS_UP_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.ARMS_UP))) .build() )); this.registerable.register(ItemKeys.BLADE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BLADE_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.BLADE_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.BLADE))) .build() )); this.registerable.register(ItemKeys.BREWER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BREWER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.BREWER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.BREWER))) .build() )); this.registerable.register(ItemKeys.BURN_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BURN_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.BURN_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.BURN))) .build() )); this.registerable.register(ItemKeys.DANGER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.DANGER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.DANGER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.DANGER))) .build() )); this.registerable.register(ItemKeys.EXPLORER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.EXPLORER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.EXPLORER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.EXPLORER))) .build() )); this.registerable.register(ItemKeys.FLOW_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.FLOW_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.FLOW_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.FLOW))) .build() )); this.registerable.register(ItemKeys.FRIEND_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.FRIEND_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.FRIEND_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.FRIEND))) .build() )); this.registerable.register(ItemKeys.GUSTER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.GUSTER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.GUSTER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.GUSTER))) .build() )); this.registerable.register(ItemKeys.HEART_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HEART_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.HEART_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.HEART))) .build() )); this.registerable.register(ItemKeys.HEARTBREAK_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HEARTBREAK_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.HEARTBREAK_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.HEARTBREAK))) .build() )); this.registerable.register(ItemKeys.HOWL_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HOWL_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.HOWL_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.HOWL))) .build() )); this.registerable.register(ItemKeys.MINER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.MINER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.MINER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.MINER))) .build() )); this.registerable.register(ItemKeys.MOURNER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.MOURNER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.MOURNER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.MOURNER))) .build() )); this.registerable.register(ItemKeys.PLENTY_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.PLENTY_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.PLENTY_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.PLENTY))) .build() )); this.registerable.register(ItemKeys.PRIZE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.PRIZE_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.PRIZE_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.PRIZE))) .build() )); this.registerable.register(ItemKeys.SCRAPE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SCRAPE_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.SCRAPE_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.SCRAPE))) .build() )); this.registerable.register(ItemKeys.SHEAF_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SHEAF_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.SHEAF_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.SHEAF))) .build() )); this.registerable.register(ItemKeys.SHELTER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SHELTER_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.SHELTER_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.SHELTER))) .build() )); this.registerable.register(ItemKeys.SKULL_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SKULL_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.SKULL_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.SKULL))) .build() )); this.registerable.register(ItemKeys.SNORT_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SNORT_POTTERY_SHERD).build(), + ItemBase.Builder.forItem(ItemKeys.SNORT_POTTERY_SHERD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.SNORT))) .build() @@ -10071,7 +10304,7 @@ private void bootstrapImmuneToDamage() { )); this.registerable.register(ItemKeys.NETHER_STAR, create( ItemBase.Builder.forItem(ItemKeys.NETHER_STAR) - .rarity(Rarity.UNCOMMON) + .rarity(Rarity.RARE) .glint() .build(), ItemComponentSet.builder() @@ -10234,7 +10467,7 @@ private void bootstrapMiscellaneous() { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .blocks(this.blocks.getOrThrow(BlockKeys.LODESTONE).value()))) + .blocks(this.blocks, this.blocks.getOrThrow(BlockKeys.LODESTONE).value()))) .build() ), PassingSequenceHandler.builder() @@ -10244,7 +10477,9 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.RECOVERY_COMPASS, create( - ItemBase.Builder.forItem(ItemKeys.RECOVERY_COMPASS).build(), + ItemBase.Builder.forItem(ItemKeys.RECOVERY_COMPASS) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(PointableItemComponent.of(this.pointers.getOrThrow(PointerKeys.LAST_DEATH))) @@ -10286,7 +10521,7 @@ private void bootstrapMiscellaneous() { .with(StackableItemComponent.of(1)) .with(ZoomItemComponent.of(SpyglassItem.FOV_MULTIPLIER, this.soundEvents.getOrThrow(SoundEventKeys.SPYGLASS_USE), this.soundEvents.getOrThrow(SoundEventKeys.SPYGLASS_STOP_USING))) .with(UseableItemComponent.builder() - .ticks(SpyglassItem.MAX_USE_TIME) + .useFor(SpyglassItem.MAX_USE_TIME) .animation(UseAction.SPYGLASS) .build()) .build() @@ -10303,7 +10538,7 @@ private void bootstrapMiscellaneous() { .with(StackableItemComponent.of(64)) .build(), ItemEventMap.builder() - .add(ItemEvents.USE_ON_BLOCK, Actions.glowSign(false)) + .add(ItemEvents.USE_ON_BLOCK, Actions.glowSign(this.blocks, false)) .build() )); this.registerable.register(ItemKeys.GLOW_INK_SAC, create( @@ -10312,7 +10547,7 @@ private void bootstrapMiscellaneous() { .with(StackableItemComponent.of(64)) .build(), ItemEventMap.builder() - .add(ItemEvents.USE_ON_BLOCK, Actions.glowSign(true)) + .add(ItemEvents.USE_ON_BLOCK, Actions.glowSign(this.blocks, true)) .build() )); this.registerable.register(ItemKeys.BONE_MEAL, create( @@ -10385,7 +10620,7 @@ private void bootstrapMiscellaneous() { .add(ExchangeItemAction.of( this.items.getOrThrow(ItemKeys.POTION), ComponentChanges.builder() - .add(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(potions.getOrThrow(PotionKeys.WATER))) + .add(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(this.potions.getOrThrow(PotionKeys.WATER))) .build())) .add(InvokeGameEventAction.of(GameEvent.FLUID_PICKUP, ActionContextParameter.TARGET, ActionContextParameter.THIS)) .add(PlaySoundAction.of(ActionContextParameter.THIS, this.soundEvents.getOrThrow(SoundEventKeys.BOTTLE_FILL), SoundCategory.NEUTRAL)) @@ -10530,7 +10765,6 @@ private void bootstrapMiscellaneous() { .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(RecipeRemainderItemComponent.of(this.items.getOrThrow(ItemKeys.GLASS_BOTTLE))) .build() )); this.registerable.register(ItemKeys.TOTEM_OF_UNDYING, create( @@ -10584,7 +10818,9 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.NAUTILUS_SHELL, create( - ItemBase.Builder.forItem(ItemKeys.NAUTILUS_SHELL).build(), + ItemBase.Builder.forItem(ItemKeys.NAUTILUS_SHELL) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() @@ -10598,7 +10834,9 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.GOAT_HORN, create( - ItemBase.Builder.forItem(ItemKeys.GOAT_HORN).build(), + ItemBase.Builder.forItem(ItemKeys.GOAT_HORN) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(PlayableItemComponent.of(InstrumentTags.GOAT_HORNS)) @@ -10613,7 +10851,7 @@ private void bootstrapMiscellaneous() { ItemEventMap.builder() .add(ItemEvents.USE_ON_BLOCK, ActionEntry.of( FirstToPassRequirementsSequenceHandler.builder() - .add(Actions.waxSign(true)) + .add(Actions.waxSign(this.blocks, true)) .add(PassingSequenceHandler.builder() .add(WaxBlockAction.of(ActionContextParameter.TARGET)) .add(DecrementItemAction.of(1)) @@ -10621,7 +10859,9 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.ECHO_SHARD, create( - ItemBase.Builder.forItem(ItemKeys.ECHO_SHARD).build(), + ItemBase.Builder.forItem(ItemKeys.ECHO_SHARD) + .rarity(Rarity.UNCOMMON) + .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() diff --git a/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java b/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java index aaf2ee57..9e987fd8 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java +++ b/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java @@ -13,18 +13,7 @@ public class ItematicItemTags { public static final TagKey REPAIRS_DIAMOND_ARMOR = of("repairs_diamond_armor"); public static final TagKey REPAIRS_NETHERITE_ARMOR = of("repairs_netherite_armor"); public static final TagKey REPAIRS_TURTLE_ARMOR = of("repairs_turtle_armor"); - public static final TagKey REPAIRS_ELYTRA = of("repairs_elytra"); - public static final TagKey REPAIRS_WOODEN_TOOL = of("repairs_wooden_tool"); - public static final TagKey REPAIRS_STONE_TOOL = of("repairs_stone_tool"); - public static final TagKey REPAIRS_GOLDEN_TOOL = of("repairs_golden_tool"); - public static final TagKey REPAIRS_IRON_TOOL = of("repairs_iron_tool"); - public static final TagKey REPAIRS_DIAMOND_TOOL = of("repairs_diamond_tool"); - public static final TagKey REPAIRS_NETHERITE_TOOL = of("repairs_netherite_tool"); - public static final TagKey REPAIRS_MACE = of("repairs_mace"); - public static final TagKey REPAIRS_SHIELD = of("repairs_shield"); - - public static final TagKey FURNACE_MINECART_FUEL = of("furnace_minecart_fuel"); public static final TagKey BOW_AMMUNITION = of("bow_ammunition"); public static final TagKey CROSSBOW_AMMUNITION = of("crossbow_ammunition"); diff --git a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java b/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java index dfc5ebd1..37c94f06 100644 --- a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java +++ b/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java @@ -49,7 +49,7 @@ public void addAttributes(AttributeModifiersComponent.Builder builder, Equipment Identifier id = Identifier.ofVanilla("armor." + type.getName()); AttributeModifierSlot attributeModifierSlot = AttributeModifierSlot.forEquipmentSlot(slot); builder.add( - EntityAttributes.GENERIC_ARMOR, + EntityAttributes.ARMOR, new EntityAttributeModifier( id, this.defense(slot), @@ -58,7 +58,7 @@ public void addAttributes(AttributeModifiersComponent.Builder builder, Equipment attributeModifierSlot ); builder.add( - EntityAttributes.GENERIC_ARMOR_TOUGHNESS, + EntityAttributes.ARMOR_TOUGHNESS, new EntityAttributeModifier( id, this.toughness, @@ -68,7 +68,7 @@ public void addAttributes(AttributeModifiersComponent.Builder builder, Equipment ); if (this.knockbackResistance > 0.0d) { builder.add( - EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, + EntityAttributes.KNOCKBACK_RESISTANCE, new EntityAttributeModifier( id, this.knockbackResistance, diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/ConstantItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/ConstantItemColor.java index c35df8c6..0fc97696 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/ConstantItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/ConstantItemColor.java @@ -25,6 +25,6 @@ public ItemColorType type() { @Override public int color(ItemStack stack, int tintIndex) { - return ColorHelper.Argb.fullAlpha(this.color); + return ColorHelper.fullAlpha(this.color); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/FireworkItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/FireworkItemColor.java index c1e8ddf4..25c91364 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/FireworkItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/FireworkItemColor.java @@ -33,18 +33,18 @@ public int color(ItemStack stack, int tintIndex) { int size = colors.size(); if (size == 1) { - return ColorHelper.Argb.fullAlpha(colors.getInt(0)); + return ColorHelper.fullAlpha(colors.getInt(0)); } int red = 0; int green = 0; int blue = 0; for (int color : colors) { - red += ColorHelper.Argb.getRed(color); - green += ColorHelper.Argb.getGreen(color); - blue += ColorHelper.Argb.getBlue(color); + red += ColorHelper.getRed(color); + green += ColorHelper.getGreen(color); + blue += ColorHelper.getBlue(color); } - return ColorHelper.Argb.getArgb(red / size, green / size, blue / size); + return ColorHelper.getArgb(red / size, green / size, blue / size); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/FoliageItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/FoliageItemColor.java index 264f5037..9c4a8adf 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/FoliageItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/FoliageItemColor.java @@ -28,6 +28,6 @@ public ItemColorType type() { @Override public int color(ItemStack stack, int tintIndex) { - return ColorHelper.Argb.fullAlpha(this.biome.value().getFoliageColor()); + return ColorHelper.fullAlpha(this.biome.value().getFoliageColor()); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/GrassItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/GrassItemColor.java index f98d6873..4965f2b4 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/GrassItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/GrassItemColor.java @@ -28,6 +28,6 @@ public ItemColorType type() { @Override public int color(ItemStack stack, int tintIndex) { - return ColorHelper.Argb.fullAlpha(this.biome.value().getGrassColorAt(0.0d, 0.0d)); + return ColorHelper.fullAlpha(this.biome.value().getGrassColorAt(0.0d, 0.0d)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/IndexItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/IndexItemColor.java index 3fec947f..b8c6c219 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/IndexItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/IndexItemColor.java @@ -31,6 +31,7 @@ public int color(ItemStack stack, int tintIndex) { if (tintIndex < 0 || tintIndex >= indices.size()) { return DEFAULT_COLOR; } - return ColorHelper.Argb.fullAlpha(this.indices.get(tintIndex)); + + return ColorHelper.fullAlpha(this.indices.get(tintIndex)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/MapItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/MapItemColor.java index b7f85233..baa8bff3 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/MapItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/MapItemColor.java @@ -23,6 +23,7 @@ public int color(ItemStack stack, int tintIndex) { if (tintIndex == 0) { return DEFAULT_COLOR; } - return ColorHelper.Argb.fullAlpha(stack.getOrDefault(DataComponentTypes.MAP_COLOR, MapColorComponent.DEFAULT).rgb()); + + return ColorHelper.fullAlpha(stack.getOrDefault(DataComponentTypes.MAP_COLOR, MapColorComponent.DEFAULT).rgb()); } } diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/PotionItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/PotionItemColor.java index ecbd40ef..60dab5af 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/PotionItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/PotionItemColor.java @@ -23,6 +23,7 @@ public int color(ItemStack stack, int tintIndex) { if (tintIndex != 0) { return DEFAULT_COLOR; } - return ColorHelper.Argb.fullAlpha(stack.getOrDefault(DataComponentTypes.POTION_CONTENTS, PotionContentsComponent.DEFAULT).getColor()); + + return ColorHelper.fullAlpha(stack.getOrDefault(DataComponentTypes.POTION_CONTENTS, PotionContentsComponent.DEFAULT).getColor()); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java index c5fef10c..42cd5a7b 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.registry.ItematicRegistries; import net.errorcraft.itematic.serialization.SetMapCodec; @@ -16,7 +17,6 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; import net.minecraft.util.ClickType; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -32,16 +32,16 @@ public interface ItemComponent> { ItemComponentType type(); Codec codec(); - default ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - return ActionResult.PASS; + default ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + return ItemResult.PASS; } - default ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { - return ActionResult.PASS; + default ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + return ItemResult.PASS; } - default ActionResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - return ActionResult.PASS; + default ItemResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + return ItemResult.PASS; } default boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker, ItemStackConsumer resultStackConsumer) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java index c86f5e83..df4a5703 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java @@ -25,7 +25,6 @@ public class ItemComponentTypes { public static final ItemComponentType DYE = register("dye", new ItemComponentType<>(DyeItemComponent.CODEC)); public static final ItemComponentType DYEABLE = register("dyeable", new ItemComponentType<>(DyeableItemComponent.CODEC)); public static final ItemComponentType TINTED = register("tinted", new ItemComponentType<>(TintedItemComponent.CODEC)); - public static final ItemComponentType USEABLE_ON_FLUID = register("useable_on_fluid", new ItemComponentType<>(UseableOnFluidItemComponent.CODEC)); public static final ItemComponentType SPAWN_EGG = register("spawn_egg", new ItemComponentType<>(SpawnEggItemComponent.CODEC)); public static final ItemComponentType DISPENSABLE = register("dispensable", new ItemComponentType<>(DispensableItemComponent.CODEC)); public static final ItemComponentType SHOOTER = register("shooter", new ItemComponentType<>(ShooterItemComponent.CODEC)); @@ -58,7 +57,6 @@ public class ItemComponentTypes { public static final ItemComponentType UNLOCK_RECIPES = register("unlock_recipes", new ItemComponentType<>(UnlockRecipesItemComponent.CODEC)); public static final ItemComponentType DEBUG_STICK = register("debug_stick", new ItemComponentType<>(DebugStickItemComponent.CODEC)); public static final ItemComponentType SUSPICIOUS_EFFECT_INGREDIENT = register("suspicious_effect_ingredient", new ItemComponentType<>(SuspiciousEffectIngredientItemComponent.CODEC)); - public static final ItemComponentType RECIPE_REMAINDER = register("recipe_remainder", new ItemComponentType<>(RecipeRemainderItemComponent.CODEC)); public static final ItemComponentType CASTABLE = register("castable", new ItemComponentType<>(CastableItemComponent.CODEC)); public static final ItemComponentType STACKABLE = register("stackable", new ItemComponentType<>(StackableItemComponent.CODEC)); public static final ItemComponentType ATTRIBUTE_MODIFIERS = register("attribute_modifiers", new ItemComponentType<>(AttributeModifiersItemComponent.CODEC)); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java index 0e2195bd..85be71e9 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -26,7 +27,6 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.StringIdentifiable; import net.minecraft.util.hit.BlockHitResult; @@ -76,14 +76,14 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.isUnuseable(Pass.FLUID)) { - return ActionResult.PASS; + return ItemResult.PASS; } BlockHitResult blockHitResult = ItemAccessor.raycast(world, user, RaycastContext.FluidHandling.SOURCE_ONLY); if (blockHitResult.getType() != HitResult.Type.BLOCK) { - return ActionResult.PASS; + return ItemResult.PASS; } ItemUsageContext context = new ItemUsageContext(world, user, hand, stack, blockHitResult); @@ -91,9 +91,9 @@ public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack sta } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { if (this.isUnuseable(Pass.BLOCK)) { - return ActionResult.PASS; + return ItemResult.PASS; } return this.place(context, resultStackConsumer); } @@ -123,7 +123,7 @@ private boolean isUnuseable(Pass pass) { return !this.passes.contains(pass); } - private ActionResult place(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + private ItemResult place(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { return BlockPlacer.of(context, resultStackConsumer, this.block, this.operatorOnly, true) .place(); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/BrushItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/BrushItemComponent.java index cf420ae2..7c2b0dd3 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/BrushItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/BrushItemComponent.java @@ -8,7 +8,7 @@ import net.minecraft.item.BrushItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.UseAction; +import net.minecraft.item.consume.UseAction; import net.minecraft.world.World; public record BrushItemComponent() implements ItemComponent { @@ -19,7 +19,7 @@ public record BrushItemComponent() implements ItemComponent public static ItemComponent[] of(int brushTicks) { return new ItemComponent[] { UseableItemComponent.builder() - .ticks(brushTicks) + .useFor(brushTicks) .animation(UseAction.BRUSH) .passes(UseableItemComponent.Pass.BLOCK) .build(), diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/BucketItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/BucketItemComponent.java index 9bba887f..96aadb63 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/BucketItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/BucketItemComponent.java @@ -7,6 +7,7 @@ import net.errorcraft.itematic.fluid.FluidKeys; import net.errorcraft.itematic.inventory.StackReferenceUtil; import net.errorcraft.itematic.item.ItemKeys; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -39,7 +40,6 @@ import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.sound.SoundEvent; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; @@ -101,10 +101,10 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { BlockHitResult blockHitResult = ItemAccessor.raycast(world, user, this.getFluidHandling()); if (blockHitResult.getType() != HitResult.Type.BLOCK) { - return ActionResult.PASS; + return ItemResult.PASS; } return this.place(world, user, hand, stack, resultStackConsumer, blockHitResult); } @@ -116,22 +116,25 @@ public void addComponents(ComponentMap.Builder builder) { } } - public ActionResult place(World world, @Nullable PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer, BlockHitResult blockHitResult) { + public ItemResult place(World world, @Nullable PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer, BlockHitResult blockHitResult) { StackReference stackReference = StackReferenceUtil.of(stack); - ActionResult result = ActionResult.PASS; + ItemResult result = ItemResult.PASS; if (this.fluid.isPresent()) { FluidPlacer fluidPlacer = FluidPlacer.of(stack, stackReference::set, world, blockHitResult, user, this.fluid.get(), this.emptyingSound.orElse(null)); result = place(fluidPlacer, result); } - if (this.block.isPresent() && result != ActionResult.FAIL) { + + if (this.block.isPresent()) { ItemUsageContext context = new ItemUsageContext(world, user, hand, stack, blockHitResult); BlockPlacer blockPlacer = BlockPlacer.of(context, stackReference::set, this.block.get(), false, false); result = place(blockPlacer, result); } + result = this.tryPlaceEntity(world, user, hand, stack, blockHitResult, stackReference, result); - if (result.isAccepted()) { + if (result.succeeds()) { resultStackConsumer.set(this.getResultStack(user, stack, stackReference.get())); } + return result; } @@ -139,39 +142,46 @@ private RaycastContext.FluidHandling getFluidHandling() { if (this.fluid.isEmpty()) { return RaycastContext.FluidHandling.NONE; } + if (this.fluid.get().matchesKey(FluidKeys.EMPTY)) { return RaycastContext.FluidHandling.SOURCE_ONLY; } + return RaycastContext.FluidHandling.NONE; } - private ActionResult tryPlaceEntity(World world, @Nullable PlayerEntity user, Hand hand, ItemStack stack, BlockHitResult blockHitResult, StackReference stackReference, ActionResult currentResult) { + private ItemResult tryPlaceEntity(World world, @Nullable PlayerEntity user, Hand hand, ItemStack stack, BlockHitResult blockHitResult, StackReference stackReference, ItemResult currentResult) { if (this.entity.isEmpty()) { return currentResult; } - if (this.entity.get().requireOtherSuccessfulPlacement && !currentResult.isAccepted()) { + + if (this.entity.get().requireOtherSuccessfulPlacement && !currentResult.succeeds()) { return currentResult; } - if (world.isClient() || currentResult == ActionResult.FAIL) { + + if (world.isClient()) { return currentResult; } + EntityPlacer entityPlacer = EntityPlacer.bucket(stack, stackReference::set, world, blockHitResult, user, this.entity.get().entity, hand); return place(entityPlacer, currentResult); } - private static ActionResult place(Placer placer, ActionResult currentResult) { - ActionResult result = placer.place(); - return currentResult.itematic$merge(result); + private static ItemResult place(Placer placer, ItemResult currentResult) { + ItemResult result = placer.place(); + return currentResult.max(result); } private ItemStack getResultStack(@Nullable PlayerEntity player, ItemStack currentStack, ItemStack possibleNewStack) { if (currentStack == possibleNewStack) { possibleNewStack = this.transformsInto.map(ItemStack::new).orElse(possibleNewStack); } + if (player == null) { currentStack.decrement(1); return possibleNewStack; } + return ItemUsage.exchangeStack(currentStack, player, possibleNewStack); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/CastableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/CastableItemComponent.java index e13f890d..d5a48c81 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/CastableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/CastableItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -15,7 +16,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; @@ -35,11 +35,11 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (!this.tryRetract(world, user, stack, resultStackConsumer)) { this.cast(world, user, stack); } - return ActionResult.success(world.isClient()); + return ItemResult.SUCCEED; } private boolean tryRetract(World world, PlayerEntity user, ItemStack stack, ItemStackConsumer resultStackConsumer) { @@ -64,7 +64,7 @@ private void cast(World world, PlayerEntity user, ItemStack stack) { if (world instanceof ServerWorld serverWorld) { int luck = EnchantmentHelper.getFishingLuckBonus(serverWorld, stack, user); int speed = (int) (EnchantmentHelper.getFishingTimeReduction(serverWorld, stack, user) * 20); - world.spawnEntity(new FishingBobberEntity(user, world, luck, speed)); + world.spawnEntity(new FishingBobberEntity(user, world, luck, speed, stack)); } user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ConsumableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ConsumableItemComponent.java index 785adc8f..d5384498 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ConsumableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ConsumableItemComponent.java @@ -2,58 +2,55 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.component.type.UseDurationDataComponent; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.event.ItemEvents; +import net.errorcraft.itematic.mixin.component.type.ConsumableComponentAccessor; import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.advancement.criterion.Criteria; +import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.ConsumableComponent; import net.minecraft.component.type.FoodComponent; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUsage; -import net.minecraft.registry.Registries; -import net.minecraft.registry.RegistryKeys; +import net.minecraft.item.consume.UseAction; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.util.Hand; -import net.minecraft.util.UseAction; import net.minecraft.world.World; import java.util.HashSet; +import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.Set; -public record ConsumableItemComponent(Optional> resultItem, boolean hasConsumeParticles, RegistryEntry sound) implements ItemComponent { - private static final RegistryEntry DEFAULT_SOUND = Registries.SOUND_EVENT.getEntry(SoundEvents.ENTITY_GENERIC_EAT); +public record ConsumableItemComponent(boolean hasConsumeParticles, RegistryEntry sound) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - RegistryFixedCodec.of(RegistryKeys.ITEM).optionalFieldOf("result_item").forGetter(ConsumableItemComponent::resultItem), Codec.BOOL.optionalFieldOf("has_consume_particles", true).forGetter(ConsumableItemComponent::hasConsumeParticles), - SoundEvent.ENTRY_CODEC.optionalFieldOf("sound", DEFAULT_SOUND).forGetter(ConsumableItemComponent::sound) + SoundEvent.ENTRY_CODEC.optionalFieldOf("sound", SoundEvents.ENTITY_GENERIC_EAT).forGetter(ConsumableItemComponent::sound) ).apply(instance, ConsumableItemComponent::new)); + private static final float CONSUME_EFFECTS_THRESHOLD = ConsumableComponentAccessor.consumeEffectsThreshold(); - public static ConsumableItemComponent of(RegistryEntry resultItem, boolean hasConsumeParticles, RegistryEntry sound) { - return new ConsumableItemComponent(Optional.ofNullable(resultItem), hasConsumeParticles, sound); + public static ConsumableItemComponent of(boolean hasConsumeParticles, RegistryEntry sound) { + return new ConsumableItemComponent(hasConsumeParticles, sound); } - public static Builder builder(int useDuration) { - return new Builder(useDuration); - } - - public static Builder builder(FoodComponent food) { - return new Builder(food.getEatTicks()) - .food(food) - .useAnimation(UseAction.EAT); + public static Builder builder(ConsumableComponent consumable) { + return new Builder(consumable.getConsumeTicks()) + .useAnimation(consumable.useAction()) + .consumeSound(consumable.sound()) + .hasConsumeParticles(consumable.hasConsumeParticles()); } @Override @@ -66,6 +63,19 @@ public Codec codec() { return CODEC; } + @Override + public void using(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks) { + ConsumableComponent consumable = stack.get(DataComponentTypes.CONSUMABLE); + if (consumable != null && shouldSpawnParticlesAndPlaySounds(usedTicks, remainingUseTicks)) { + consumable.spawnParticlesAndPlaySound(user.getRandom(), user, stack, 5); + } + } + + @Override + public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.CONSUMABLE, new ConsumableComponent(0.0f, UseAction.NONE, this.sound, this.hasConsumeParticles, List.of())); + } + public void consume(LivingEntity user, ItemStack stack, ItemStackConsumer resultStackConsumer, World world, Hand hand) { if (!(user instanceof PlayerEntity player)) { return; @@ -77,9 +87,8 @@ public void consume(LivingEntity user, ItemStack stack, ItemStackConsumer result .build(); stack.itematic$invokeEvent(ItemEvents.CONSUME_ITEM, context); } - this.resultItem.map(ItemStack::new) - .map(resultStack -> ItemUsage.exchangeStack(stack, player, resultStack)) - .ifPresentOrElse(resultStackConsumer::set, () -> stack.decrementUnlessCreative(1, user)); + + stack.decrementUnlessCreative(1, user); if (player instanceof ServerPlayerEntity serverPlayer) { Criteria.CONSUME_ITEM.trigger(serverPlayer, stack); } @@ -87,13 +96,18 @@ public void consume(LivingEntity user, ItemStack stack, ItemStackConsumer result player.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); } + private static boolean shouldSpawnParticlesAndPlaySounds(int usedTicks, int remainingUseTicks) { + boolean isValidTime = remainingUseTicks != UseDurationDataComponent.INDEFINITE_USE_DURATION && usedTicks > (usedTicks + remainingUseTicks) * CONSUME_EFFECTS_THRESHOLD; + return isValidTime && usedTicks % 4 == 0; + } + public static class Builder { private final int useDuration; private UseAction useAnimation; private FoodItemComponent food; - private RegistryEntry resultItem; + private RegistryEntry remainder; private boolean hasConsumeParticles = true; - private RegistryEntry consumeSound = DEFAULT_SOUND; + private RegistryEntry consumeSound = SoundEvents.ENTITY_GENERIC_EAT; private Builder(int useDuration) { this.useDuration = useDuration; @@ -102,11 +116,12 @@ private Builder(int useDuration) { public ItemComponent[] build() { Set> behavior = new HashSet<>(); behavior.add(UseableItemComponent.builder() - .ticks(this.useDuration) + .useFor(this.useDuration) .animation(this.useAnimation) + .remainder(this.remainder) .build() ); - behavior.add(ConsumableItemComponent.of(this.resultItem, this.hasConsumeParticles, this.consumeSound)); + behavior.add(ConsumableItemComponent.of(this.hasConsumeParticles, this.consumeSound)); if (this.food != null) { behavior.add(this.food); } @@ -124,8 +139,8 @@ public Builder useAnimation(UseAction animation) { return this; } - public Builder resultItem(RegistryEntry resultItem) { - this.resultItem = Objects.requireNonNull(resultItem); + public Builder remainder(RegistryEntry resultItem) { + this.remainder = Objects.requireNonNull(resultItem); return this; } @@ -138,5 +153,10 @@ public Builder consumeSound(RegistryEntry consumeSound) { this.consumeSound = Objects.requireNonNull(consumeSound); return this; } + + public Builder hasConsumeParticles(boolean hasConsumeParticles) { + this.hasConsumeParticles = hasConsumeParticles; + return this; + } } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/CooldownItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/CooldownItemComponent.java index ec289228..140fd577 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/CooldownItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/CooldownItemComponent.java @@ -2,22 +2,34 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.SharedConstants; +import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.UseCooldownComponent; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public record CooldownItemComponent(int ticks) implements ItemComponent { +import java.util.Optional; + +public record CooldownItemComponent(Optional group, int ticks) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Identifier.CODEC.optionalFieldOf("group").forGetter(CooldownItemComponent::group), Codecs.POSITIVE_INT.fieldOf("ticks").forGetter(CooldownItemComponent::ticks) ).apply(instance, CooldownItemComponent::new)); + public static CooldownItemComponent of(int ticks) { + return new CooldownItemComponent(Optional.empty(), ticks); + } + @Override public ItemComponentType type() { return ItemComponentTypes.COOLDOWN; @@ -29,12 +41,17 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - user.getItemCooldownManager().set(stack.getItem(), this.ticks); - return ActionResult.PASS; + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + UseCooldownComponent useCooldown = stack.get(DataComponentTypes.USE_COOLDOWN); + if (useCooldown != null) { + useCooldown.set(stack, user); + } + + return ItemResult.PASS; } - public static CooldownItemComponent of(int ticks) { - return new CooldownItemComponent(ticks); + @Override + public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.USE_COOLDOWN, new UseCooldownComponent((float) this.ticks / SharedConstants.TICKS_PER_SECOND, this.group)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/DamageableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/DamageableItemComponent.java index 9b04a728..55034de6 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/DamageableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/DamageableItemComponent.java @@ -2,27 +2,25 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.component.type.WeaponAttackDamageDataComponent; +import net.errorcraft.itematic.block.BlockKeys; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.block.Block; -import net.minecraft.block.Blocks; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.ToolComponent; -import net.minecraft.entity.EntityType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.registry.tag.BlockTags; import net.minecraft.registry.tag.TagKey; import net.minecraft.sound.SoundEvent; import net.minecraft.util.dynamic.Codecs; -import java.util.Arrays; -import java.util.List; import java.util.Optional; public record DamageableItemComponent(int durability, Optional> breakSound, boolean preserveItem) implements ItemComponent { @@ -44,47 +42,39 @@ public static DamageableItemComponent ofPreserved(int durability) { return new DamageableItemComponent(durability, Optional.empty(), true); } - @SafeVarargs - public static ItemComponent[] sword(ToolMaterial material, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - double attackDamage = 4.0d + material.getAttackDamage(); + public static ItemComponent[] sword(RegistryEntryLookup blocks, ToolMaterial material, RegistryEntryList repairItems) { + double attackDamage = 4.0d + material.attackDamageBonus(); return new ItemComponent[] { StackableItemComponent.of(1), - DamageableItemComponent.of(material.getDurability()), + DamageableItemComponent.of(material.durability()), ToolItemComponent.builder(2) - .rule(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0f)) - .rule(ToolComponent.Rule.of(BlockTags.SWORD_EFFICIENT, 1.5f)) + .rule(ToolComponent.Rule.ofAlwaysDropping(RegistryEntryList.of(blocks.getOrThrow(BlockKeys.COBWEB)), 15.0f)) + .rule(ToolComponent.Rule.of(blocks.getOrThrow(BlockTags.SWORD_EFFICIENT), 1.5f)) .build(), WeaponItemComponent.of( 1, attackDamage, - 0.4d, - Arrays.stream(proficientEntityTypeTags) - .map(proficientEntityTypeTag -> WeaponAttackDamageDataComponent.Rule.addsToBase(proficientEntityTypeTag, attackDamage - 1.0d)) - .toArray(WeaponAttackDamageDataComponent.Rule[]::new) + 0.4d ), EnchantableItemComponent.of(material), - RepairableItemComponent.of(repairItemsTag) + RepairableItemComponent.of(repairItems) }; } - @SafeVarargs - public static ItemComponent[] shovel(ToolMaterial material, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - return tool(material, 2.5d, 0.25d, BlockTags.SHOVEL_MINEABLE, repairItemsTag, proficientEntityTypeTags); + public static ItemComponent[] shovel(RegistryEntryLookup blocks, ToolMaterial material, RegistryEntryList repairItems) { + return tool(blocks, material, 2.5d, 0.25d, BlockTags.SHOVEL_MINEABLE, repairItems); } - @SafeVarargs - public static ItemComponent[] pickaxe(ToolMaterial material, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - return tool(material, 2.0d, 0.3d, BlockTags.PICKAXE_MINEABLE, repairItemsTag, proficientEntityTypeTags); + public static ItemComponent[] pickaxe(RegistryEntryLookup blocks, ToolMaterial material, RegistryEntryList repairItems) { + return tool(blocks, material, 2.0d, 0.3d, BlockTags.PICKAXE_MINEABLE, repairItems); } - @SafeVarargs - public static ItemComponent[] axe(ToolMaterial material, double attackDamage, double attackSpeed, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - return tool(material, attackDamage, attackSpeed, BlockTags.AXE_MINEABLE, repairItemsTag, proficientEntityTypeTags); + public static ItemComponent[] axe(RegistryEntryLookup blocks, ToolMaterial material, double attackDamage, double attackSpeed, RegistryEntryList repairItems) { + return tool(blocks, material, attackDamage, attackSpeed, BlockTags.AXE_MINEABLE, repairItems); } - @SafeVarargs - public static ItemComponent[] hoe(ToolMaterial material, double attackDamage, double attackSpeed, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - return tool(material, attackDamage, attackSpeed, BlockTags.HOE_MINEABLE, repairItemsTag, proficientEntityTypeTags); + public static ItemComponent[] hoe(RegistryEntryLookup blocks, ToolMaterial material, double attackDamage, double attackSpeed, RegistryEntryList repairItems) { + return tool(blocks, material, attackDamage, attackSpeed, BlockTags.HOE_MINEABLE, repairItems); } @Override @@ -92,23 +82,19 @@ public ItemComponentType type() { return ItemComponentTypes.DAMAGEABLE; } - @SafeVarargs - private static ItemComponent[] tool(ToolMaterial material, double attackDamage, double attackSpeed, TagKey mineableBlocks, TagKey repairItemsTag, TagKey>... proficientEntityTypeTags) { - double realAttackDamage = attackDamage + material.getAttackDamage(); + private static ItemComponent[] tool(RegistryEntryLookup blocks, ToolMaterial material, double attackDamage, double attackSpeed, TagKey mineableBlocks, RegistryEntryList repairItems) { + double realAttackDamage = attackDamage + material.attackDamageBonus(); return new ItemComponent[] { StackableItemComponent.of(1), - DamageableItemComponent.of(material.getDurability()), - ToolItemComponent.of(material, mineableBlocks), + DamageableItemComponent.of(material.durability()), + ToolItemComponent.of(blocks, material, mineableBlocks), WeaponItemComponent.of( 2, realAttackDamage, - attackSpeed, - Arrays.stream(proficientEntityTypeTags) - .map(proficientEntityTypeTag -> WeaponAttackDamageDataComponent.Rule.addsToBase(proficientEntityTypeTag, realAttackDamage - 1.0d)) - .toArray(WeaponAttackDamageDataComponent.Rule[]::new) + attackSpeed ), EnchantableItemComponent.of(material), - RepairableItemComponent.of(repairItemsTag) + RepairableItemComponent.of(repairItems) }; } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/DebugStickItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/DebugStickItemComponent.java index dd81ff1d..0ceeb852 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/DebugStickItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/DebugStickItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -14,7 +15,6 @@ import net.minecraft.item.DebugStickItem; import net.minecraft.item.Item; import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -36,20 +36,20 @@ public Codec codec() { } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { World world = context.getWorld(); if (world.isClient()) { - return ActionResult.PASS; + return ItemResult.PASS; } PlayerEntity player = context.getPlayer(); if (player == null) { - return ActionResult.PASS; + return ItemResult.PASS; } BlockPos pos = context.getBlockPos(); if (!DUMMY.callUse(player, world.getBlockState(pos), world, pos, true, context.getStack())) { - return ActionResult.PASS; + return ItemResult.PASS; } - return ActionResult.success(world.isClient()); + return ItemResult.SUCCEED; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/DyeItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/DyeItemComponent.java index 3b66acb9..c96c9f2e 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/DyeItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/DyeItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -10,7 +11,6 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.item.ItemUsageContext; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.ActionResult; import net.minecraft.util.DyeColor; public record DyeItemComponent(DyeColor color) implements ItemComponent { @@ -27,10 +27,11 @@ public Codec codec() { } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { if (!(context.getWorld() instanceof ServerWorld world)) { - return ActionResult.SUCCESS; + return ItemResult.SUCCEED; } + ActionContext actionContext = ActionContext.builder(world, context.getStack(), resultStackConsumer) .entityPosition(ActionContextParameter.THIS, context.getPlayer()) .position(ActionContextParameter.TARGET, context.getBlockPos()) @@ -38,9 +39,10 @@ public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resul ModifySignAction action = ModifySignAction.dye(ActionContextParameter.TARGET, this.color); if (action.execute(actionContext)) { context.getStack().decrementUnlessCreative(1, context.getPlayer()); - return ActionResult.CONSUME; + return ItemResult.CONSUME; } - return ActionResult.PASS; + + return ItemResult.PASS; } public static DyeItemComponent of(DyeColor color) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java index 11561677..68865fd0 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java @@ -5,7 +5,9 @@ import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.item.ArmorMaterial; +import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.EnchantableComponent; import net.minecraft.item.Item; import net.minecraft.item.ToolMaterial; import net.minecraft.registry.RegistryKeys; @@ -21,12 +23,8 @@ public record EnchantableItemComponent(int enchantability, Optional material) { - return of(material.value().enchantability()); - } - public static EnchantableItemComponent of(ToolMaterial material) { - return of(material.getEnchantability()); + return of(material.enchantmentValue()); } public static EnchantableItemComponent of(int enchantability) { @@ -46,4 +44,9 @@ public ItemComponentType type() { public Codec codec() { return CODEC; } + + @Override + public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.ENCHANTABLE, new EnchantableComponent(this.enchantability)); + } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java index b4f4195e..69623912 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java @@ -5,6 +5,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.entity.initializer.EntityInitializer; import net.errorcraft.itematic.entity.initializer.initializers.SimpleEntityInitializer; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -13,11 +14,14 @@ import net.errorcraft.itematic.item.dispense.behavior.DispenseBehaviors; import net.errorcraft.itematic.item.placement.EntityPlacer; import net.errorcraft.itematic.mixin.item.DecorationItemAccessor; +import net.errorcraft.itematic.mixin.item.ItemAccessor; import net.errorcraft.itematic.mixin.item.SpawnEggItemAccessor; +import net.errorcraft.itematic.serialization.ItematicCodecs; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.NbtComponent; import net.minecraft.entity.EntityType; import net.minecraft.entity.decoration.painting.PaintingEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; @@ -26,20 +30,42 @@ import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryWrapper; import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; +import net.minecraft.util.Hand; +import net.minecraft.util.StringIdentifiable; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; import java.util.List; import java.util.Optional; +import java.util.Set; -public record EntityItemComponent(EntityInitializer entity, boolean allowItemData) implements ItemComponent { +public record EntityItemComponent(EntityInitializer entity, boolean allowItemData, Set passes) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( EntityInitializer.CODEC.fieldOf("entity").forGetter(EntityItemComponent::entity), - Codec.BOOL.optionalFieldOf("allow_item_data", false).forGetter(EntityItemComponent::allowItemData) + Codec.BOOL.optionalFieldOf("allow_item_data", false).forGetter(EntityItemComponent::allowItemData), + ItematicCodecs.setCodec(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(EntityItemComponent::passes) ).apply(instance, EntityItemComponent::new)); private static final MapCodec> ENTITY_TYPE_MAP_CODEC = SpawnEggItemAccessor.entityTypeMapCodec(); private static final Text RANDOM_TEXT = DecorationItemAccessor.randomText(); + public static EntityItemComponent of(EntityInitializer entity) { + return new EntityItemComponent(entity, false, Pass.DEFAULT_PASSES); + } + + public static EntityItemComponent of(EntityInitializer entity, boolean allowItemData, Pass... passes) { + return new EntityItemComponent(entity, allowItemData, Set.of(passes)); + } + + public static ItemComponent[] from(EntityInitializer entity, RegistryEntryLookup dispenseBehaviors) { + return new ItemComponent[] { + of(entity), + DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.SPAWN_ENTITY_FROM_ITEM)) + }; + } + @Override public ItemComponentType type() { return ItemComponentTypes.ENTITY; @@ -50,6 +76,38 @@ public Codec codec() { return CODEC; } + @Override + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + if (this.isUnuseable(Pass.FLUID)) { + return ItemResult.PASS; + } + + if (world.isClient()) { + return ItemResult.SUCCEED; + } + + BlockHitResult blockHitResult = ItemAccessor.raycast(world, user, RaycastContext.FluidHandling.SOURCE_ONLY); + if (blockHitResult.getType() != HitResult.Type.BLOCK) { + return ItemResult.PASS; + } + + ItemUsageContext itemUsageContext = new ItemUsageContext(world, user, hand, stack, blockHitResult); + return this.place(itemUsageContext, resultStackConsumer); + } + + @Override + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + if (this.isUnuseable(Pass.BLOCK)) { + return ItemResult.PASS; + } + + if (context.getWorld().isClient()) { + return ItemResult.SUCCEED; + } + + return this.place(context, resultStackConsumer); + } + @Override public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { if (this.entity.type() != EntityType.PAINTING) { @@ -81,43 +139,43 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List entity) { - return of(entity, false); - } + public EntityInitializer getEntityInitializer(ItemStack stack) { + if (!this.allowItemData) { + return this.entity; + } - public static EntityItemComponent of(EntityInitializer entity, boolean allowItemData) { - return new EntityItemComponent(entity, allowItemData); + NbtComponent entityData = stack.getOrDefault(DataComponentTypes.ENTITY_DATA, NbtComponent.DEFAULT); + Optional> initializer = entityData.get(ENTITY_TYPE_MAP_CODEC) + .result() + .map(SimpleEntityInitializer::new); + return initializer.orElse(this.entity); } - public static ItemComponent[] from(EntityInitializer entity, RegistryEntryLookup dispenseBehaviors) { - return from(entity, false, dispenseBehaviors); + private boolean isUnuseable(Pass pass) { + return !this.passes.contains(pass); } - public static ItemComponent[] from(EntityInitializer entity, boolean allowItemData, RegistryEntryLookup dispenseBehaviors) { - return new ItemComponent[] { - of(entity, allowItemData), - DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.SPAWN_ENTITY_FROM_ITEM)) - }; + private ItemResult place(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + return EntityPlacer.spawned(context, context.getStack(), resultStackConsumer, this) + .place(); } - @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { - ItemStack stack = context.getStack(); - if (context.getWorld().isClient()) { - return ActionResult.SUCCESS; + public enum Pass implements StringIdentifiable { + BLOCK("block"), + FLUID("fluid"); + + public static final Set DEFAULT_PASSES = Set.of(BLOCK); + public static final Codec CODEC = StringIdentifiable.createCodec(Pass::values); + + private final String name; + + Pass(String name) { + this.name = name; } - EntityPlacer placer = EntityPlacer.spawned(context, stack, resultStackConsumer, this); - return placer.place(); - } - public EntityInitializer getEntityInitializer(ItemStack stack) { - if (!this.allowItemData) { - return this.entity; + @Override + public String asString() { + return this.name; } - NbtComponent entityData = stack.getOrDefault(DataComponentTypes.ENTITY_DATA, NbtComponent.DEFAULT); - Optional> initializer = entityData.get(ENTITY_TYPE_MAP_CODEC) - .result() - .map(SimpleEntityInitializer::new); - return initializer.orElse(this.entity); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java index cbbbf7f6..9b07b22e 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -25,7 +26,6 @@ import net.minecraft.stat.Stats; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -60,25 +60,32 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (!this.swappable) { - return ActionResult.PASS; + return ItemResult.PASS; } - TypedActionResult result = this.equipAndSwap(stack.getItem(), world, user, hand); - resultStackConsumer.set(result.getValue()); + + ActionResult result = this.equipAndSwap(stack.getItem(), world, user, hand); + if (result instanceof ActionResult.Success success) { + resultStackConsumer.set(success.getNewHandStack()); + } + if (world instanceof ServerWorld serverWorld) { ActionContext context = ActionContext.builder(serverWorld, stack, resultStackConsumer, hand) .entityPosition(ActionContextParameter.THIS, user) .build(); stack.itematic$invokeEvent(ItemEvents.EQUIP_ITEM, context); } - if (result.getResult() == ActionResult.FAIL) { - return ActionResult.PASS; + + if (result == ActionResult.FAIL) { + return ItemResult.PASS; } - if (result.getResult().isAccepted() && !world.isClient()) { + + if (result.isAccepted() && !world.isClient()) { user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); } - return result.getResult(); + + return result.isAccepted() ? ItemResult.SUCCEED : ItemResult.PASS; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java index cca46301..8cad8e49 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -17,7 +18,6 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; @@ -41,31 +41,34 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (!user.isFallFlying()) { - return ActionResult.PASS; + return ItemResult.PASS; } + if (world.isClient()) { - return ActionResult.SUCCESS; + return ItemResult.SUCCEED; } + FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(world, stack, user); world.spawnEntity(fireworkRocketEntity); stack.decrementUnlessCreative(1, user); user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.CONSUME; + return ItemResult.CONSUME; } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { World world = context.getWorld(); ItemStack stack = context.getStack(); if (world.isClient()) { - return ActionResult.SUCCESS; + return ItemResult.SUCCEED; } + FireworkRocketEntity entity = createFireworkEntity(world, stack, context); world.spawnEntity(entity); stack.decrement(1); - return ActionResult.CONSUME; + return ItemResult.CONSUME; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/FoodItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/FoodItemComponent.java index 72ee669d..1db58158 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/FoodItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/FoodItemComponent.java @@ -6,28 +6,31 @@ import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.errorcraft.itematic.item.event.ItemEvents; +import net.errorcraft.itematic.world.action.context.ActionContext; +import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.FoodComponent; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; import net.minecraft.util.dynamic.Codecs; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import java.util.List; -import java.util.Optional; - -public record FoodItemComponent(int nutrition, float saturation, boolean alwaysEdible, List effects) implements ItemComponent { +public record FoodItemComponent(int nutrition, float saturation, boolean alwaysEdible) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codecs.NONNEGATIVE_INT.fieldOf("nutrition").forGetter(FoodItemComponent::nutrition), + Codecs.NON_NEGATIVE_INT.fieldOf("nutrition").forGetter(FoodItemComponent::nutrition), Codec.FLOAT.fieldOf("saturation").forGetter(FoodItemComponent::saturation), - Codec.BOOL.optionalFieldOf("always_edible", false).forGetter(FoodItemComponent::alwaysEdible), - FoodComponent.StatusEffectEntry.CODEC.listOf().optionalFieldOf("effects", List.of()).forGetter(FoodItemComponent::effects) + Codec.BOOL.optionalFieldOf("always_edible", false).forGetter(FoodItemComponent::alwaysEdible) ).apply(instance, FoodItemComponent::new)); public static FoodItemComponent of(FoodComponent food) { - return new FoodItemComponent(food.nutrition(), food.saturation(), food.canAlwaysEat(), food.effects()); + return new FoodItemComponent(food.nutrition(), food.saturation(), food.canAlwaysEat()); } @Override @@ -43,17 +46,26 @@ public Codec codec() { @Override public void finishUsing(World world, LivingEntity user, ItemStack stack, int usedTicks, ItemStackConsumer resultStackConsumer) { FoodComponent food = stack.get(DataComponentTypes.FOOD); - if (food != null) { - user.itematic$eatFood(world, stack, food, resultStackConsumer); + if (user instanceof PlayerEntity player) { + player.getHungerManager().eat(food); + world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.ENTITY_PLAYER_BURP, SoundCategory.PLAYERS, 0.5f, MathHelper.nextBetween(user.getRandom(), 0.9f, 1.0f)); + } + + if (world instanceof ServerWorld serverWorld) { + ActionContext context = ActionContext.builder(serverWorld, stack, resultStackConsumer, user.getActiveHand()) + .entityPosition(ActionContextParameter.THIS, user) + .build(); + stack.itematic$invokeEvent(ItemEvents.EAT_ITEM, context); } } @Override public void addComponents(ComponentMap.Builder builder) { - builder.add(DataComponentTypes.FOOD, new FoodComponent(this.nutrition, this.saturation, false, 1.0f, Optional.empty(), this.effects)); + builder.add(DataComponentTypes.FOOD, new FoodComponent(this.nutrition, this.saturation, this.alwaysEdible)); } - public boolean mayStartUsing(PlayerEntity user) { - return user.canConsume(this.alwaysEdible); + public boolean mayStartUsing(PlayerEntity user, ItemStack stack) { + FoodComponent food = stack.get(DataComponentTypes.FOOD); + return food != null && user.canConsume(food.canAlwaysEat()); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/FuelItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/FuelItemComponent.java index f52ce833..f2f48f9a 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/FuelItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/FuelItemComponent.java @@ -5,13 +5,27 @@ import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.dynamic.Codecs; -public record FuelItemComponent(int ticks) implements ItemComponent { +import java.util.Optional; + +public record FuelItemComponent(int ticks, Optional remainder) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codecs.POSITIVE_INT.fieldOf("ticks").forGetter(FuelItemComponent::ticks) + Codecs.POSITIVE_INT.fieldOf("ticks").forGetter(FuelItemComponent::ticks), + ItemStack.CODEC.optionalFieldOf("remainder").forGetter(FuelItemComponent::remainder) ).apply(instance, FuelItemComponent::new)); + public static FuelItemComponent of(int ticks) { + return new FuelItemComponent(ticks, Optional.empty()); + } + + public static FuelItemComponent of(int ticks, RegistryEntry remainder) { + return new FuelItemComponent(ticks, Optional.of(new ItemStack(remainder))); + } + @Override public ItemComponentType type() { return ItemComponentTypes.FUEL; @@ -21,8 +35,4 @@ public ItemComponentType type() { public Codec codec() { return CODEC; } - - public static FuelItemComponent of(int ticks) { - return new FuelItemComponent(ticks); - } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java index 011efa95..845a83ac 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java @@ -3,6 +3,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.component.ItematicDataComponentTypes; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -10,33 +11,25 @@ import net.errorcraft.itematic.item.holder.rule.ItemHolderRules; import net.errorcraft.itematic.mixin.item.BundleItemAccessor; import net.errorcraft.itematic.serialization.ItematicCodecs; -import net.errorcraft.itematic.util.Util; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.BundleContentsComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsage; import net.minecraft.item.tooltip.BundleTooltipData; import net.minecraft.item.tooltip.TooltipData; -import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.screen.slot.Slot; import net.minecraft.sound.SoundEvent; import net.minecraft.stat.Stats; -import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; import net.minecraft.util.ClickType; -import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.world.World; import org.apache.commons.lang3.math.Fraction; -import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.function.Consumer; @@ -65,14 +58,14 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (!BundleItemAccessor.dropAllBundledItems(stack, user)) { - return ActionResult.PASS; + return ItemResult.PASS; } user.playSound(this.emptySound.value(), 0.8f, 0.8f + world.getRandom().nextFloat() * 0.4f); user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.success(world.isClient()); + return ItemResult.SUCCEED; } @Override @@ -124,18 +117,6 @@ public void addComponents(ComponentMap.Builder builder) { builder.add(ItematicDataComponentTypes.ITEM_HOLDER_RULES, this.rules); } - @Override - public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { - Fraction occupancyFraction = this.occupancy(stack); - if (occupancyFraction == null) { - return; - } - - int occupancy = Util.multiplyFraction(occupancyFraction, Item.DEFAULT_MAX_COUNT); - int capacity = Util.multiplyFraction(Objects.requireNonNull(stack.get(ItematicDataComponentTypes.ITEM_HOLDER_CAPACITY)), Item.DEFAULT_MAX_COUNT); - tooltip.add(Text.translatable("item.minecraft.bundle.fullness", occupancy, capacity).formatted(Formatting.GRAY)); - } - public Optional tooltipData(ItemStack stack) { BundleContentsComponent bundleContents = stack.get(DataComponentTypes.BUNDLE_CONTENTS); if (bundleContents == null) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/MappableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/MappableItemComponent.java index 444d2e5f..66c2d9da 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/MappableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/MappableItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.ItemUsageUtil; import net.errorcraft.itematic.item.component.ItemComponent; @@ -18,7 +19,6 @@ import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.World; @@ -39,15 +39,15 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (world.isClient()) { - return ActionResult.SUCCESS; + return ItemResult.SUCCEED; } user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); user.getWorld().playSoundFromEntity(null, user, SoundEvents.UI_CARTOGRAPHY_TABLE_TAKE_RESULT, user.getSoundCategory(), 1.0f, 1.0f); ItemStack resultStack = this.createStack(world, user.getBlockX(), user.getBlockZ(), 0, true, false); resultStackConsumer.set(ItemUsageUtil.exchangeStack(stack, user, resultStack, true, true)); - return ActionResult.CONSUME; + return ItemResult.CONSUME; } public ItemStack createStack(World world, int x, int z, int scale, boolean showIcons, boolean unlimitedTracking) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/OminousEffectProviderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/OminousEffectProviderItemComponent.java index f835a338..83c59a78 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/OminousEffectProviderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/OminousEffectProviderItemComponent.java @@ -6,13 +6,10 @@ import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.PotionContentsComponent; +import net.minecraft.component.type.OminousBottleAmplifierComponent; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.OminousBottleItem; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.minecraft.world.World; @@ -37,23 +34,17 @@ public Codec codec() { @Override public void finishUsing(World world, LivingEntity user, ItemStack stack, int usedTicks, ItemStackConsumer resultStackConsumer) { - if (world.isClient()) { - return; + OminousBottleAmplifierComponent ominousAmplifier = stack.get(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER); + if (ominousAmplifier != null) { + ominousAmplifier.onConsume(world, user, stack, null); } - - user.removeStatusEffect(StatusEffects.BAD_OMEN); - int ominousAmplifier = stack.getOrDefault(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER, 0); - user.addStatusEffect(createEffect(ominousAmplifier)); } @Override public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { - int ominousAmplifier = stack.getOrDefault(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER, 0); - List effects = List.of(createEffect(ominousAmplifier)); - PotionContentsComponent.buildTooltip(effects, tooltip::add, 1.0f, context.getUpdateTickRate()); - } - - private static StatusEffectInstance createEffect(int ominousAmplifier) { - return new StatusEffectInstance(StatusEffects.BAD_OMEN, OminousBottleItem.BAD_OMEN_LENGTH, ominousAmplifier, false, false, true); + OminousBottleAmplifierComponent ominousAmplifier = stack.get(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER); + if (ominousAmplifier != null) { + ominousAmplifier.appendTooltip(context, tooltip::add, type); + } } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java index 9a94c0b4..76337a05 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java @@ -2,27 +2,33 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.use.provider.providers.PlayableIntegerProvider; import net.errorcraft.itematic.mixin.item.GoatHornItemAccessor; +import net.minecraft.SharedConstants; import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Instrument; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.consume.UseAction; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.registry.tag.TagKey; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.util.*; +import net.minecraft.util.Formatting; +import net.minecraft.util.Hand; +import net.minecraft.util.Util; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import java.util.List; @@ -37,7 +43,7 @@ public record PlayableItemComponent(TagKey instruments) implements I public static ItemComponent[] of(TagKey instruments) { return new ItemComponent[] { UseableItemComponent.builder() - .ticks(PlayableIntegerProvider.INSTANCE) + .useFor(PlayableIntegerProvider.INSTANCE) .animation(UseAction.TOOT_HORN) .build(), new PlayableItemComponent(instruments) @@ -55,31 +61,38 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - return this.instrument(stack) + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + return this.instrument(stack, user.getRegistryManager()) .map(RegistryEntry::value) .map(instrument -> { GoatHornItemAccessor.playSound(world, user, instrument); - user.getItemCooldownManager().set(stack.getItem(), instrument.useDuration()); + user.getItemCooldownManager().set(stack, MathHelper.floor(instrument.useDuration() * SharedConstants.TICKS_PER_SECOND)); user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.CONSUME; - }).orElse(ActionResult.PASS); + return ItemResult.CONSUME; + }).orElse(ItemResult.PASS); } @Override public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { - this.instrument(stack) + RegistryWrapper.WrapperLookup lookup = context.getRegistryLookup(); + if (lookup == null) { + return; + } + + this.instrument(stack, lookup) .flatMap(RegistryEntry::getKey) .map(RegistryKey::getValue) .ifPresent(id -> tooltip.add(Text.translatable(Util.createTranslationKey("instrument", id)).formatted(Formatting.GRAY))); } - public Optional> instrument(ItemStack stack) { + public Optional> instrument(ItemStack stack, RegistryWrapper.WrapperLookup lookup) { RegistryEntry instrument = stack.get(DataComponentTypes.INSTRUMENT); if (instrument != null) { return Optional.of(instrument); } - return Registries.INSTRUMENT.getEntryList(this.instruments) + + return lookup.getWrapperOrThrow(RegistryKeys.INSTRUMENT) + .getOptional(this.instruments) .map(RegistryEntryList::stream) .flatMap(Stream::findFirst); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/PreventUseWhenUsedOnTargetItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/PreventUseWhenUsedOnTargetItemComponent.java index 3fd5ec3d..f235864d 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/PreventUseWhenUsedOnTargetItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/PreventUseWhenUsedOnTargetItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -10,7 +11,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; public record PreventUseWhenUsedOnTargetItemComponent(boolean block, boolean entity) implements ItemComponent { @@ -19,6 +19,10 @@ public record PreventUseWhenUsedOnTargetItemComponent(boolean block, boolean ent Codec.BOOL.optionalFieldOf("entity", false).forGetter(PreventUseWhenUsedOnTargetItemComponent::entity) ).apply(instance, PreventUseWhenUsedOnTargetItemComponent::new)); + public static PreventUseWhenUsedOnTargetItemComponent forBlock() { + return new PreventUseWhenUsedOnTargetItemComponent(true, false); + } + @Override public ItemComponentType type() { return ItemComponentTypes.PREVENT_USE_WHEN_USED_ON_TARGET; @@ -30,20 +34,12 @@ public Codec codec() { } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { - return this.block ? ActionResult.CONSUME_PARTIAL : ActionResult.PASS; + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + return this.block ? ItemResult.CONSUME : ItemResult.PASS; } @Override - public ActionResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - return this.entity ? ActionResult.CONSUME_PARTIAL : ActionResult.PASS; - } - - public static PreventUseWhenUsedOnTargetItemComponent forBlock() { - return new PreventUseWhenUsedOnTargetItemComponent(true, false); - } - - public static PreventUseWhenUsedOnTargetItemComponent forEntity() { - return new PreventUseWhenUsedOnTargetItemComponent(false, true); + public ItemResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + return this.entity ? ItemResult.CONSUME : ItemResult.PASS; } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java index 35ce3b47..899020ff 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java @@ -13,6 +13,7 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.ExplosiveProjectileEntity; import net.minecraft.entity.projectile.PersistentProjectileEntity; @@ -80,7 +81,7 @@ public Entity createEntity(World world, Position position, ItemStack stack, floa } public Entity createEntity(ActionContext context, ActionContextParameter position, float angleOffset, float speed, float uncertainty) { - Entity entity = this.entity.create(context); + Entity entity = this.entity.create(context, SpawnReason.SPAWN_EGG); if (entity == null) { return null; } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/RecipeRemainderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/RecipeRemainderItemComponent.java deleted file mode 100644 index 7d127bdf..00000000 --- a/src/main/java/net/errorcraft/itematic/item/component/components/RecipeRemainderItemComponent.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.errorcraft.itematic.item.component.components; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.item.component.ItemComponent; -import net.errorcraft.itematic.item.component.ItemComponentType; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.item.Item; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryFixedCodec; - -public record RecipeRemainderItemComponent(RegistryEntry item) implements ItemComponent { - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - RegistryFixedCodec.of(RegistryKeys.ITEM).fieldOf("item").forGetter(RecipeRemainderItemComponent::item) - ).apply(instance, RecipeRemainderItemComponent::new)); - - @Override - public ItemComponentType type() { - return ItemComponentTypes.RECIPE_REMAINDER; - } - - @Override - public Codec codec() { - return CODEC; - } - - public static RecipeRemainderItemComponent of(RegistryEntry item) { - return new RecipeRemainderItemComponent(item); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/RepairableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/RepairableItemComponent.java index 20e7a557..2d83d392 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/RepairableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/RepairableItemComponent.java @@ -5,15 +5,23 @@ import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.RepairableComponent; import net.minecraft.item.Item; +import net.minecraft.registry.RegistryCodecs; import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.TagKey; +import net.minecraft.registry.entry.RegistryEntryList; -public record RepairableItemComponent(TagKey items) implements ItemComponent { +public record RepairableItemComponent(RegistryEntryList items) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - TagKey.unprefixedCodec(RegistryKeys.ITEM).fieldOf("items").forGetter(RepairableItemComponent::items) + RegistryCodecs.entryList(RegistryKeys.ITEM).fieldOf("items").forGetter(RepairableItemComponent::items) ).apply(instance, RepairableItemComponent::new)); + public static RepairableItemComponent of(RegistryEntryList items) { + return new RepairableItemComponent(items); + } + @Override public ItemComponentType type() { return ItemComponentTypes.REPAIRABLE; @@ -24,7 +32,8 @@ public Codec codec() { return CODEC; } - public static RepairableItemComponent of(TagKey items) { - return new RepairableItemComponent(items); + @Override + public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.REPAIRABLE, new RepairableComponent(this.items)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SaddleItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SaddleItemComponent.java index 933e862d..189019c9 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SaddleItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SaddleItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -10,7 +11,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; @@ -30,12 +30,12 @@ public Codec codec() { } @Override - public ActionResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.trySaddle(target, user.getWorld(), stack, SoundCategory.NEUTRAL)) { - return ActionResult.success(user.getWorld().isClient()); + return ItemResult.SUCCEED; } - return ActionResult.PASS; + return ItemResult.PASS; } public boolean trySaddle(LivingEntity target, World world, ItemStack stack, SoundCategory soundCategory) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java index 3ab04895..49171bd7 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java @@ -5,6 +5,7 @@ import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.ItemDamageRulesDataComponent; import net.errorcraft.itematic.component.type.ItemListDataComponent; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -21,13 +22,12 @@ import net.minecraft.entity.projectile.ProjectileEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.consume.UseAction; import net.minecraft.registry.RegistryCodecs; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.UseAction; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -48,7 +48,7 @@ public record ShooterItemComponent(RegistryEntryList heldAmmunition, Regis public static ItemComponent[] of(UseAction animation, RegistryEntryList heldAmmunition, RegistryEntryList ammunition, int range, ShooterMethod method, ItemDamageRulesDataComponent.Rule... rules) { return new ItemComponent[] { UseableItemComponent.builder() - .ticks(ShooterIntegerProvider.INSTANCE) + .useFor(ShooterIntegerProvider.INSTANCE) .animation(animation) .build(), new ShooterItemComponent( @@ -72,12 +72,12 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.method.tryShoot(this, stack, world, user, hand)) { - return ActionResult.CONSUME; + return ItemResult.CONSUME; } - return ActionResult.PASS; + return ItemResult.PASS; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SmithingTemplateItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SmithingTemplateItemComponent.java index a8a58b9f..57b0c536 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SmithingTemplateItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SmithingTemplateItemComponent.java @@ -23,8 +23,8 @@ public record SmithingTemplateItemComponent(RegistryEntry temp public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryFixedCodec.of(ItematicRegistryKeys.SMITHING_TEMPLATE).fieldOf("template").forGetter(SmithingTemplateItemComponent::template) ).apply(instance, SmithingTemplateItemComponent::new)); - private static final Formatting TITLE_FORMATTING = SmithingTemplateItemAccessor.getTitleFormatting(); private static final Formatting DESCRIPTION_FORMATTING = SmithingTemplateItemAccessor.getDescriptionFormatting(); + private static final Text SMITHING_TEMPLATE_TEXT = SmithingTemplateItemAccessor.getSmithingTemplateText(); private static final Text APPLIES_TO_TEXT = SmithingTemplateItemAccessor.getAppliesToText(); private static final Text INGREDIENTS_TEXT = SmithingTemplateItemAccessor.getIngredientsText(); @@ -48,7 +48,7 @@ public Codec codec() { @Override public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { SmithingTemplate template = this.template.value(); - tooltip.add(template.titleText().formatted(TITLE_FORMATTING)); + tooltip.add(SMITHING_TEMPLATE_TEXT); tooltip.add(ScreenTexts.EMPTY); tooltip.add(APPLIES_TO_TEXT); tooltip.add(ScreenTexts.space().append(template.appliesToText().formatted(DESCRIPTION_FORMATTING))); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java index 9e09c771..5ac402e7 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java @@ -10,6 +10,7 @@ import net.errorcraft.itematic.item.dispense.behavior.DispenseBehaviors; import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.passive.PassiveEntity; import net.minecraft.entity.player.PlayerEntity; @@ -63,9 +64,8 @@ public Optional spawnBaby(PlayerEntity user, MobEntity entity, Entity public static ItemComponent[] from(RegistryEntry> entity, int primaryColor, int secondaryColor, RegistryEntryLookup dispenseBehaviors) { return new ItemComponent[] { - EntityItemComponent.of(SimpleEntityInitializer.of(entity.value()), true), + EntityItemComponent.of(SimpleEntityInitializer.of(entity.value()), true, EntityItemComponent.Pass.BLOCK, EntityItemComponent.Pass.FLUID), INSTANCE, - UseableOnFluidItemComponent.INSTANCE, TintedItemComponent.of(IndexItemColor.of(primaryColor, secondaryColor)), DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.SPAWN_ENTITY_FROM_ITEM)) }; @@ -75,6 +75,7 @@ private MobEntity createEntity(MobEntity entity, EntityType if (entity instanceof PassiveEntity passiveEntity) { return passiveEntity.createChild(world, passiveEntity); } - return entityType.create(world); + + return entityType.create(world, SpawnReason.SPAWN_EGG); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SteeringItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SteeringItemComponent.java index 6b29ddfe..3ce85361 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SteeringItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SteeringItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -19,7 +20,6 @@ import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.server.world.ServerWorld; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; @@ -27,7 +27,7 @@ public record SteeringItemComponent(RegistryEntry> target, int damagePerUse) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryFixedCodec.of(RegistryKeys.ENTITY_TYPE).fieldOf("target").forGetter(SteeringItemComponent::target), - Codecs.NONNEGATIVE_INT.optionalFieldOf("damage_per_use", 1).forGetter(SteeringItemComponent::damagePerUse) + Codecs.NON_NEGATIVE_INT.optionalFieldOf("damage_per_use", 1).forGetter(SteeringItemComponent::damagePerUse) ).apply(instance, SteeringItemComponent::new)); @Override @@ -41,18 +41,18 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (world.isClient()) { - return ActionResult.PASS; + return ItemResult.PASS; } ActionContext context = ActionContext.builder((ServerWorld) world, stack, resultStackConsumer, hand) .entityPosition(ActionContextParameter.THIS, user) .build(); if (this.apply(user, stack, context)) { - return ActionResult.SUCCESS; + return ItemResult.SUCCEED; } user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.PASS; + return ItemResult.PASS; } public static SteeringItemComponent of(RegistryEntry> target, int damage) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java index 33471d36..5c1af562 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -14,12 +15,11 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.consume.UseAction; import net.minecraft.predicate.NumberRange; import net.minecraft.server.world.ServerWorld; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.UseAction; import net.minecraft.world.World; import java.util.Optional; @@ -46,7 +46,7 @@ public static ThrowableItemComponent of(float speed, float angleOffset) { public static ItemComponent[] trident(float speed, float angleOffset, int minDrawDuration) { return new ItemComponent[] { UseableItemComponent.builder() - .ticks(TridentIntegerProvider.INSTANCE) + .useFor(TridentIntegerProvider.INSTANCE) .animation(UseAction.SPEAR) .build(), new ThrowableItemComponent(speed, angleOffset, Optional.of(NumberRange.IntRange.atLeast(minDrawDuration))) @@ -64,9 +64,9 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.drawDuration.isPresent()) { - return ActionResult.PASS; + return ItemResult.PASS; } return this.createEntity(world, user, stack, resultStackConsumer); } @@ -81,7 +81,7 @@ public void stopUsing(ItemStack stack, World world, LivingEntity user, int usedT } } - private ActionResult createEntity(World world, LivingEntity user, ItemStack stack, ItemStackConsumer resultStackConsumer) { + private ItemResult createEntity(World world, LivingEntity user, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (world instanceof ServerWorld serverWorld) { ActionContext context = ActionContext.builder(serverWorld, stack, resultStackConsumer) .entityPosition(ActionContextParameter.THIS, user) @@ -89,7 +89,8 @@ private ActionResult createEntity(World world, LivingEntity user, ItemStack stac .build(); this.createEntity(context); } - return ActionResult.success(world.isClient()); + + return ItemResult.SUCCEED; } private void createEntity(ActionContext context) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ToolItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ToolItemComponent.java index 58f53fbc..8cd9d532 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ToolItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ToolItemComponent.java @@ -17,6 +17,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.tag.TagKey; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -28,8 +29,16 @@ public record ToolItemComponent(ToolComponent tool) implements ItemComponent { public static final Codec CODEC = ToolComponent.CODEC.xmap(ToolItemComponent::new, ToolItemComponent::tool); - public static ToolItemComponent of(ToolMaterial material, TagKey mineableBlocks) { - return new ToolItemComponent(material.createComponent(mineableBlocks)); + public static ToolItemComponent of(RegistryEntryLookup blocks, ToolMaterial material, TagKey mineableBlocks) { + ToolComponent tool = new ToolComponent( + List.of( + ToolComponent.Rule.ofNeverDropping(blocks.getOrThrow(material.incorrectBlocksForDrops())), + ToolComponent.Rule.ofAlwaysDropping(blocks.getOrThrow(mineableBlocks), material.speed()) + ), + 1.0f, + 1 + ); + return new ToolItemComponent(tool); } public static Builder builder(int damage) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/UnlockRecipesItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/UnlockRecipesItemComponent.java index 663eaf14..090c46e4 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/UnlockRecipesItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/UnlockRecipesItemComponent.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -11,7 +12,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.KnowledgeBookItem; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.World; @@ -33,8 +33,8 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - return DUMMY.use(world, user, hand).getResult(); + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + return DUMMY.use(world, user, hand).isAccepted() ? ItemResult.SUCCEED : ItemResult.PASS; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java index 04390989..4da95c09 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java @@ -4,31 +4,37 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.UseDurationDataComponent; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.use.provider.IntegerProvider; import net.errorcraft.itematic.item.use.provider.providers.ConstantIntegerProvider; +import net.errorcraft.itematic.item.use.provider.providers.IndefiniteIntegerProvider; import net.errorcraft.itematic.serialization.ItematicCodecs; -import net.errorcraft.itematic.util.UseActionUtil; import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.UseRemainderComponent; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; +import net.minecraft.item.consume.UseAction; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Hand; import net.minecraft.util.StringIdentifiable; -import net.minecraft.util.UseAction; import net.minecraft.world.World; +import java.util.Optional; import java.util.Set; -public record UseableItemComponent(UseDurationDataComponent ticks, UseAction animation, Set passes) implements ItemComponent { +public record UseableItemComponent(Optional ticks, UseAction animation, Optional remainder, Set passes) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - UseDurationDataComponent.MAP_CODEC.forGetter(UseableItemComponent::ticks), - UseActionUtil.CODEC.optionalFieldOf("animation", UseAction.NONE).forGetter(UseableItemComponent::animation), + UseDurationDataComponent.CODEC.optionalFieldOf("ticks").forGetter(UseableItemComponent::ticks), + UseAction.CODEC.optionalFieldOf("animation", UseAction.NONE).forGetter(UseableItemComponent::animation), + ItemStack.CODEC.optionalFieldOf("remainder").forGetter(UseableItemComponent::remainder), ItematicCodecs.setCodec(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(UseableItemComponent::passes) ).apply(instance, UseableItemComponent::new)); @@ -47,47 +53,54 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.isUnuseable(Pass.NORMAL)) { - return ActionResult.PASS; + return ItemResult.PASS; } + return tryStartUsing(world, user, hand, stack); } @Override - public ActionResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnBlock(ItemUsageContext context, ItemStackConsumer resultStackConsumer) { if (this.isUnuseable(Pass.BLOCK)) { - return ActionResult.PASS; + return ItemResult.PASS; } + return tryStartUsing(context.getWorld(), context.getPlayer(), context.getHand(), context.getStack()); } @Override - public ActionResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult useOnEntity(PlayerEntity user, LivingEntity target, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { if (this.isUnuseable(Pass.ENTITY)) { - return ActionResult.PASS; + return ItemResult.PASS; } + return tryStartUsing(user.getWorld(), user, hand, stack); } - private static ActionResult tryStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { + private static ItemResult tryStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { if (!stack.itematic$mayStartUsing(world, user, hand, stack)) { - return ActionResult.PASS; + return ItemResult.PASS; } - UseDurationDataComponent useDurationDataComponent = stack.get(ItematicDataComponentTypes.USE_DURATION); - if (useDurationDataComponent == null) { - return ActionResult.PASS; + + UseDurationDataComponent useDuration = stack.get(ItematicDataComponentTypes.USE_DURATION); + if (useDuration == null) { + return ItemResult.CONSUME; } - if (useDurationDataComponent.startUsing(world, user, hand, stack)) { - return ActionResult.CONSUME; + + if (useDuration.startUsing(world, user, hand, stack)) { + return ItemResult.CONSUME; } - return ActionResult.PASS; + + return ItemResult.PASS; } @Override public void addComponents(ComponentMap.Builder builder) { - builder.add(ItematicDataComponentTypes.USE_DURATION, this.ticks); + this.ticks.ifPresent(ticks -> builder.add(ItematicDataComponentTypes.USE_DURATION, ticks)); builder.add(ItematicDataComponentTypes.USE_ANIMATION, this.animation); + this.remainder.ifPresent(remainder -> builder.add(DataComponentTypes.USE_REMAINDER, new UseRemainderComponent(remainder))); } private boolean isUnuseable(Pass pass) { @@ -97,33 +110,45 @@ private boolean isUnuseable(Pass pass) { public static class Builder { private IntegerProvider ticks; private UseAction animation = UseAction.NONE; + private RegistryEntry remainder; private Set passes = Pass.DEFAULT_PASSES; private Builder() {} public UseableItemComponent build() { return new UseableItemComponent( - this.ticks == null ? UseDurationDataComponent.INDEFINITE : new UseDurationDataComponent(this.ticks), + Optional.ofNullable(this.ticks).map(UseDurationDataComponent::new), this.animation, + Optional.ofNullable(this.remainder).map(ItemStack::new), this.passes ); } - public Builder ticks(int ticks) { + public Builder useFor(int ticks) { this.ticks = new ConstantIntegerProvider(ticks); return this; } - public Builder ticks(IntegerProvider ticks) { + public Builder useFor(IntegerProvider ticks) { this.ticks = ticks; return this; } + public Builder useIndefinitely() { + this.ticks = IndefiniteIntegerProvider.INSTANCE; + return this; + } + public Builder animation(UseAction animation) { this.animation = animation; return this; } + public Builder remainder(RegistryEntry remainder) { + this.remainder = remainder; + return this; + } + public Builder passes(Pass... passes) { this.passes = Set.of(passes); return this; diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/UseableOnFluidItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/UseableOnFluidItemComponent.java deleted file mode 100644 index 0f869028..00000000 --- a/src/main/java/net/errorcraft/itematic/item/component/components/UseableOnFluidItemComponent.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.errorcraft.itematic.item.component.components; - -import com.mojang.serialization.Codec; -import net.errorcraft.itematic.item.ItemStackConsumer; -import net.errorcraft.itematic.item.component.ItemComponent; -import net.errorcraft.itematic.item.component.ItemComponentType; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.mixin.item.ItemAccessor; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.world.RaycastContext; -import net.minecraft.world.World; - -public record UseableOnFluidItemComponent() implements ItemComponent { - public static final UseableOnFluidItemComponent INSTANCE = new UseableOnFluidItemComponent(); - public static final Codec CODEC = Codec.unit(INSTANCE); - - @Override - public ItemComponentType type() { - return ItemComponentTypes.USEABLE_ON_FLUID; - } - - @Override - public Codec codec() { - return CODEC; - } - - @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - BlockHitResult blockHitResult = ItemAccessor.raycast(world, user, RaycastContext.FluidHandling.SOURCE_ONLY); - if (blockHitResult.getType() != HitResult.Type.BLOCK) { - return ActionResult.PASS; - } - - ItemUsageContext itemUsageContext = new ItemUsageContext(world, user, hand, stack, blockHitResult); - return stack.useOnBlock(itemUsageContext); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/WeaponItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/WeaponItemComponent.java index 966a008e..bbc8f896 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/WeaponItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/WeaponItemComponent.java @@ -30,17 +30,17 @@ public record WeaponItemComponent(int damagePerHit, WeaponAttackDamageDataComponent attackDamage, double attackSpeed, boolean maySmash) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codecs.NONNEGATIVE_INT.optionalFieldOf("damage_per_hit", 1).forGetter(WeaponItemComponent::damagePerHit), + Codecs.NON_NEGATIVE_INT.optionalFieldOf("damage_per_hit", 1).forGetter(WeaponItemComponent::damagePerHit), WeaponAttackDamageDataComponent.CODEC.fieldOf("attack_damage").forGetter(WeaponItemComponent::attackDamage), ItematicCodecs.NON_NEGATIVE_DOUBLE.fieldOf("attack_speed").forGetter(WeaponItemComponent::attackSpeed), Codec.BOOL.optionalFieldOf("may_smash", false).forGetter(WeaponItemComponent::maySmash) ).apply(instance, WeaponItemComponent::new)); private static final MaceItem DUMMY = new MaceItem(new Item.Settings()); - public static WeaponItemComponent of(int damagePerHit, double attackDamage, double attackSpeed, WeaponAttackDamageDataComponent.Rule... rules) { + public static WeaponItemComponent of(int damagePerHit, double attackDamage, double attackSpeed) { return new WeaponItemComponent( damagePerHit, - new WeaponAttackDamageDataComponent(List.of(rules), attackDamage), + new WeaponAttackDamageDataComponent(List.of(), attackDamage), attackSpeed, false ); @@ -98,7 +98,7 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { user.useBook(stack, hand); user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.success(world.isClient()); + return ItemResult.SUCCEED; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java index dc19399f..5a94f441 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -13,7 +14,6 @@ import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.sound.SoundEvent; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.world.World; @@ -39,10 +39,10 @@ public Codec codec() { } @Override - public ActionResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { + public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { user.playSound(this.startUsingSound.value(), 1.0f, 1.0f); user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ActionResult.PASS; + return ItemResult.PASS; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/dispense/behavior/DispenseBehaviors.java b/src/main/java/net/errorcraft/itematic/item/dispense/behavior/DispenseBehaviors.java index 9265c11a..a7c5623e 100644 --- a/src/main/java/net/errorcraft/itematic/item/dispense/behavior/DispenseBehaviors.java +++ b/src/main/java/net/errorcraft/itematic/item/dispense/behavior/DispenseBehaviors.java @@ -80,7 +80,7 @@ public static void bootstrap(Registerable registerable) { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .blocks(blocks.getOrThrow(BlockKeys.RESPAWN_ANCHOR).value()))) + .blocks(blocks, blocks.getOrThrow(BlockKeys.RESPAWN_ANCHOR).value()))) .build() ), decrement(ChargeRespawnAnchorAction.of(ActionContextParameter.TARGET)))) diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java b/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java index 16e1c7d5..98da25a6 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java @@ -10,10 +10,10 @@ import net.minecraft.component.ComponentChanges; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.FireworksComponent; +import net.minecraft.component.type.OminousBottleAmplifierComponent; import net.minecraft.item.FireworkRocketItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.OminousBottleItem; import net.minecraft.registry.Registerable; import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKeys; @@ -156,7 +156,7 @@ public static void bootstrap(Registerable registerable) ItemGroupEntry.tag(ItematicItemTags.BEDS), ItemGroupEntry.tag(ItematicItemTags.CANDLES), ItemGroupEntry.tag(ItematicItemTags.BANNERS), - StackItemGroupEntry.fromStack(RaidUtil.createOminousBanner(items, bannerPatterns)), + StackItemGroupEntry.fromStack(RaidUtil.getOminousBanner(items, bannerPatterns)), ItemGroupEntry.tag(ItematicItemTags.HEADS), ItemGroupEntry.simple(items.getOrThrow(ItemKeys.DRAGON_EGG)), ItemGroupEntry.simple(items.getOrThrow(ItemKeys.END_PORTAL_FRAME)), @@ -482,10 +482,10 @@ private static ItemGroupEntry[] lightBlocks(RegistryEntry item) { } private static ItemGroupEntry[] ominousBottles(RegistryEntry item) { - List entries = new ArrayList<>(OminousBottleItem.field_50145 - OminousBottleItem.field_50144); - for (int amplifier = OminousBottleItem.field_50144; amplifier <= OminousBottleItem.field_50145; amplifier++) { + List entries = new ArrayList<>(OminousBottleAmplifierComponent.MAX_VALUE - OminousBottleAmplifierComponent.MIN_VALUE + 1); + for (int amplifier = OminousBottleAmplifierComponent.MIN_VALUE; amplifier <= OminousBottleAmplifierComponent.MAX_VALUE; amplifier++) { ItemStack stack = new ItemStack(item); - stack.set(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER, amplifier); + stack.set(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER, new OminousBottleAmplifierComponent(amplifier)); entries.add(StackItemGroupEntry.fromStack(stack)); } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/CooldownModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/CooldownModelOverride.java index 8914c1f2..a3f92a20 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/CooldownModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/CooldownModelOverride.java @@ -11,8 +11,9 @@ public class CooldownModelOverride implements ClampedModelOverride { @Override public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable LivingEntity target, int seed) { if (target instanceof PlayerEntity player) { - player.getItemCooldownManager().getCooldownProgress(stack.getItem(), 0.0f); + player.getItemCooldownManager().getCooldownProgress(stack, 0.0f); } + return 0.0f; } } diff --git a/src/main/java/net/errorcraft/itematic/item/placement/BlockPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/BlockPlacer.java index 397763cc..291892c4 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/BlockPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/BlockPlacer.java @@ -3,6 +3,7 @@ import net.errorcraft.itematic.access.block.entity.BlockEntityAccess; import net.errorcraft.itematic.block.BlockStateUtil; import net.errorcraft.itematic.block.ShapeContextUtil; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.event.ItemEvents; import net.errorcraft.itematic.item.placement.block.picker.BlockPicker; @@ -26,7 +27,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.state.StateManager; import net.minecraft.state.property.Property; -import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -68,20 +68,20 @@ public static BlockPlacer of(ItemPlacementContext context, ItemStackConsumer res } @Override - public ActionResult place() { + public ItemResult place() { if (!this.context.canPlace()) { - return ActionResult.PASS; + return ItemResult.PASS; } BlockState blockState = this.getPlacementState(); if (blockState == null) { - return ActionResult.PASS; + return ItemResult.PASS; } if (!this.world.setBlockState(this.blockPos, blockState, Block.NOTIFY_ALL_AND_REDRAW)) { - return ActionResult.PASS; + return ItemResult.PASS; } this.placed(blockState); - return ActionResult.success(this.world.isClient()); + return ItemResult.SUCCEED; } private void placed(BlockState blockState) { diff --git a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java index ed5cb654..e53d56b7 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.placement; import net.errorcraft.itematic.entity.initializer.EntityInitializer; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.BucketItemComponent; @@ -19,7 +20,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -76,11 +76,11 @@ public static EntityPlacer bucket(ItemStack stack, ItemStackConsumer resultStack } @Override - public ActionResult place() { + public ItemResult place() { if (!this.mayModifyBlock || !this.tryModifySpawnerBlock()) { this.placeEntity(); } - return ActionResult.CONSUME; + return ItemResult.CONSUME; } private boolean tryModifySpawnerBlock() { @@ -138,7 +138,7 @@ private Entity createEntity(BlockPos offset, ActionContext context) { this.initializer.type().itematic$setInitializer(null, null); return entity; } - Entity entity = this.initializer.create(context); + Entity entity = this.initializer.create(context, this.spawnReason); if (entity != null) { entity.refreshPositionAfterTeleport(Vec3d.ofBottomCenter(offset)); ((ServerWorld) this.world).spawnEntityAndPassengers(entity); diff --git a/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java index ad0dc296..15b68d97 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.item.placement; import net.errorcraft.itematic.fluid.FluidKeys; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.minecraft.advancement.criterion.Criteria; import net.minecraft.block.Block; @@ -19,7 +20,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -46,19 +46,19 @@ public static FluidPlacer of(ItemStack stack, ItemStackConsumer resultStackConsu } @Override - public ActionResult place() { + public ItemResult place() { BlockPos offset = this.blockPos.offset(this.direction); if (this.player != null && (!this.world.canPlayerModifyAt(this.player, this.blockPos) || !this.player.canPlaceOn(offset, this.direction, this.stack))) { - return ActionResult.PASS; + return ItemResult.PASS; } if (this.fluid.matchesKey(FluidKeys.EMPTY)) { return this.tryDrainFluid(); } BlockPos actualBlockPos = this.getActualPosition(offset); if (!this.tryPlaceFluid(actualBlockPos, this.allowOffset)) { - return ActionResult.PASS; + return ItemResult.PASS; } - return ActionResult.success(this.world.isClient()); + return ItemResult.SUCCEED; } private BlockPos getActualPosition(BlockPos offset) { @@ -71,18 +71,18 @@ private BlockPos getActualPosition(BlockPos offset) { return offset; } - private ActionResult tryDrainFluid() { + private ItemResult tryDrainFluid() { if (!(this.blockState.getBlock() instanceof FluidDrainable fluidDrainable)) { - return ActionResult.PASS; + return ItemResult.PASS; } ItemStack drainedItemStack = fluidDrainable.tryDrainFluid(this.player, this.world, this.blockPos, this.blockState); if (drainedItemStack.isEmpty()) { - return ActionResult.PASS; + return ItemResult.PASS; } this.applyPlayerEffects(fluidDrainable, drainedItemStack); this.world.emitGameEvent(this.player, GameEvent.FLUID_PICKUP, this.blockPos); this.resultStackConsumer.set(drainedItemStack); - return ActionResult.success(this.world.isClient()); + return ItemResult.SUCCEED; } private void applyPlayerEffects(FluidDrainable fluidDrainable, ItemStack drainedItemStack) { diff --git a/src/main/java/net/errorcraft/itematic/item/placement/Placer.java b/src/main/java/net/errorcraft/itematic/item/placement/Placer.java index d14ba2b2..cee323af 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/Placer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/Placer.java @@ -1,10 +1,10 @@ package net.errorcraft.itematic.item.placement; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -27,7 +27,7 @@ protected Placer(ItemStack stack, ItemStackConsumer resultStackConsumer, World w this.player = player; } - public abstract ActionResult place(); + public abstract ItemResult place(); protected void tryDecrementStack() { this.stack.decrementUnlessCreative(1, this.player); diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypeKeys.java b/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypeKeys.java index 126335a4..6c76524e 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypeKeys.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypeKeys.java @@ -10,6 +10,7 @@ public class IntegerProviderTypeKeys { public static final RegistryKey> SHOOTER = of("shooter"); public static final RegistryKey> TRIDENT = of("trident"); public static final RegistryKey> CONDITION = of("condition"); + public static final RegistryKey> INDEFINITE = of("indefinite"); private IntegerProviderTypeKeys() {} diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypes.java b/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypes.java index 0258bd8c..9fc81498 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypes.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/IntegerProviderTypes.java @@ -11,6 +11,7 @@ public class IntegerProviderTypes { public static final IntegerProviderType SHOOTER = register(IntegerProviderTypeKeys.SHOOTER, new IntegerProviderType<>(ShooterIntegerProvider.CODEC, ShooterIntegerProvider.PACKET_CODEC)); public static final IntegerProviderType TRIDENT = register(IntegerProviderTypeKeys.TRIDENT, new IntegerProviderType<>(TridentIntegerProvider.CODEC, TridentIntegerProvider.PACKET_CODEC)); public static final IntegerProviderType CONDITION = register(IntegerProviderTypeKeys.CONDITION, new IntegerProviderType<>(ConditionIntegerProvider.CODEC, ConditionIntegerProvider.PACKET_CODEC)); + public static final IntegerProviderType INDEFINITE = register(IntegerProviderTypeKeys.INDEFINITE, new IntegerProviderType<>(IndefiniteIntegerProvider.CODEC, IndefiniteIntegerProvider.PACKET_CODEC)); private IntegerProviderTypes() {} diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/IndefiniteIntegerProvider.java b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/IndefiniteIntegerProvider.java new file mode 100644 index 00000000..9175b949 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/IndefiniteIntegerProvider.java @@ -0,0 +1,31 @@ +package net.errorcraft.itematic.item.use.provider.providers; + +import com.mojang.serialization.MapCodec; +import io.netty.buffer.ByteBuf; +import net.errorcraft.itematic.component.type.UseDurationDataComponent; +import net.errorcraft.itematic.item.use.provider.IntegerProvider; +import net.errorcraft.itematic.item.use.provider.IntegerProviderType; +import net.errorcraft.itematic.item.use.provider.IntegerProviderTypes; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; + +import java.util.OptionalInt; + +public class IndefiniteIntegerProvider implements IntegerProvider { + public static final IndefiniteIntegerProvider INSTANCE = new IndefiniteIntegerProvider(); + public static final MapCodec CODEC = MapCodec.unit(INSTANCE); + public static final PacketCodec PACKET_CODEC = PacketCodec.unit(INSTANCE); + + private IndefiniteIntegerProvider() {} + + @Override + public IntegerProviderType type() { + return IntegerProviderTypes.INDEFINITE; + } + + @Override + public OptionalInt get(ItemStack stack, LivingEntity user) { + return OptionalInt.of(UseDurationDataComponent.INDEFINITE_USE_DURATION); + } +} diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java index 9ed17f48..dfce0d49 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java @@ -6,10 +6,12 @@ import net.errorcraft.itematic.item.use.provider.IntegerProvider; import net.errorcraft.itematic.item.use.provider.IntegerProviderType; import net.errorcraft.itematic.item.use.provider.IntegerProviderTypes; +import net.minecraft.SharedConstants; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.codec.PacketCodec; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.math.MathHelper; import java.util.OptionalInt; @@ -28,9 +30,9 @@ public IntegerProviderType type() { @Override public OptionalInt get(ItemStack stack, LivingEntity user) { return stack.itematic$getComponent(ItemComponentTypes.PLAYABLE) - .flatMap(component -> component.instrument(stack)) + .flatMap(component -> component.instrument(stack, user.getRegistryManager())) .map(RegistryEntry::value) - .map(instrument -> OptionalInt.of(instrument.useDuration())) + .map(instrument -> OptionalInt.of(MathHelper.floor(instrument.useDuration() * SharedConstants.TICKS_PER_SECOND))) .orElseGet(OptionalInt::empty); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/FenceBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/FenceBlockExtender.java deleted file mode 100644 index 1711a56e..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/block/FenceBlockExtender.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.errorcraft.itematic.mixin.block; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.block.FenceBlock; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(FenceBlock.class) -public class FenceBlockExtender { - @Redirect( - method = "onUseWithItem", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForLeadUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.LEAD); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/FlowerPotBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/FlowerPotBlockExtender.java index 1177e9ab..0317e692 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/FlowerPotBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/FlowerPotBlockExtender.java @@ -7,8 +7,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -25,11 +25,12 @@ public class FlowerPotBlockExtender extends BlockExtender { * @reason Uses the Action implementation for data-driven items. */ @Overwrite - public ItemActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + public ActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { if (stack.isIn(ItematicItemTags.PREVENTS_TAKING_POTTED_ITEM_OUT)) { - return ItemActionResult.SKIP_DEFAULT_BLOCK_INTERACTION; + return ActionResult.CONSUME; } - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/ScaffoldingBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/ScaffoldingBlockExtender.java index c4bbc38a..331d0683 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/ScaffoldingBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/ScaffoldingBlockExtender.java @@ -100,10 +100,12 @@ private boolean tooHigh(ItemPlacementContext context, World world, BlockPos pos) if (world.isClient() || world.isInBuildLimit(pos)) { return false; } - int topY = world.getTopY(); + + int topY = world.getTopYInclusive(); if (context.getPlayer() instanceof ServerPlayerEntity player && pos.getY() >= topY) { player.sendMessageToClient(Text.translatable("build.tooHigh", topY - 1).formatted(Formatting.RED), true); } + return true; } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java index cf52ee89..3b169de8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java @@ -29,7 +29,7 @@ @Mixin(CauldronBehavior.class) public interface CauldronBehaviorExtender { @Redirect( - method = "method_32215", + method = "cleanShulkerBox", at = @At( value = "INVOKE", target = "Lnet/minecraft/block/Block;getBlockFromItem(Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block;" @@ -44,7 +44,7 @@ private static Block getBlockFromItemUseItemComponent(Item item) { } @Redirect( - method = "method_32215", + method = "cleanShulkerBox", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;copyComponentsToNewStack(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/item/ItemStack;" @@ -55,7 +55,7 @@ private static ItemStack copyComponentsToNewStackForShulkerBoxUseRegistryEntry(I } @Redirect( - method = "method_32209", + method = "cleanArmor", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" @@ -66,7 +66,10 @@ private static boolean isInForDyeableItemUseItemComponentCheck(ItemStack instanc } @Redirect( - method = { "method_32219", "method_32222" }, + method = { + "method_32219", + "method_32222" + }, at = @At( value = "NEW", target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" @@ -1020,7 +1023,13 @@ private static Object yellowShulkerBoxUseRegistryKey(Object key) { } @Redirect( - method = { "method_32219", "method_32220", "method_32222", "emptyCauldron", "fillCauldron" }, + method = { + "method_32219", + "method_32220", + "method_32222", + "emptyCauldron", + "fillCauldron" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/stat/StatType;getOrCreateStat(Ljava/lang/Object;)Lnet/minecraft/stat/Stat;" diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java index 86f91b5e..c0d6a7a2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java @@ -4,8 +4,8 @@ import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.FuelItemComponent; -import net.errorcraft.itematic.item.component.components.RecipeRemainderItemComponent; import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.item.FuelRegistry; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; @@ -13,30 +13,24 @@ import net.minecraft.registry.RegistryKeys; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Slice; @Mixin(AbstractFurnaceBlockEntity.class) public class AbstractFurnaceBlockEntityExtender { - @Inject( + @Redirect( method = "getFuelTime", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;" - ), - cancellable = true - ) - public void getFuelTimeUseItemComponent(ItemStack fuel, CallbackInfoReturnable info) { - info.setReturnValue(fuel.itematic$getComponent(ItemComponentTypes.FUEL).map(FuelItemComponent::ticks).orElse(0)); - } - - @Inject( - method = "canUseAsFuel", - at = @At("HEAD"), - cancellable = true + target = "Lnet/minecraft/item/FuelRegistry;getFuelTicks(Lnet/minecraft/item/ItemStack;)I" + ) ) - private static void canUseAsFuelUseItemComponentCheck(ItemStack stack, CallbackInfoReturnable info) { - info.setReturnValue(stack.itematic$hasComponent(ItemComponentTypes.FUEL)); + private int getFuelTicksUseDataComponent(FuelRegistry instance, ItemStack item) { + return item.itematic$getComponent(ItemComponentTypes.FUEL) + .map(FuelItemComponent::ticks) + .orElse(0); } @Redirect( @@ -146,9 +140,8 @@ private boolean isValidIsOfForBucketUseRegistryKeyCheck(ItemStack instance, Item ) @SuppressWarnings("unchecked") private static E setRemainderItemStackUseItemComponent(E element, @Local(ordinal = 0) Item item) { - return (E) item.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) + return (E) item.itematic$getComponent(ItemComponentTypes.FUEL) + .flatMap(FuelItemComponent::remainder) .orElse(ItemStack.EMPTY); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java index cf071736..f8eeeee0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java @@ -1,20 +1,24 @@ package net.errorcraft.itematic.mixin.block.entity; import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.RecipeRemainderItemComponent; import net.minecraft.block.entity.BrewingStandBlockEntity; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.recipe.BrewingRecipeRegistry; +import net.minecraft.util.ItemScatterer; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(BrewingStandBlockEntity.class) public class BrewingStandBlockEntityExtender { @@ -73,7 +77,10 @@ private boolean isOfRemainingItemChecksReturnFalse(ItemStack instance, Item item } @Redirect( - method = { "isValid", "canExtract" }, + method = { + "isValid", + "canExtract" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -114,17 +121,24 @@ private static boolean isOfForBlazePowderUseRegistryKeyCheckStatic(ItemStack ins return instance.itematic$isOf(ItemKeys.BLAZE_POWDER); } - @Redirect( + @Inject( method = "craft", at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;decrement(I)V", + shift = At.Shift.AFTER ) ) - private static ItemStack newItemStackForRemainderUseItemComponent(ItemConvertible item, @Local ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); + private static void setRemainderForDragonBreath(World world, BlockPos pos, DefaultedList slots, CallbackInfo info, @Local LocalRef ingredient) { + if (!ingredient.get().itematic$isOf(ItemKeys.DRAGON_BREATH)) { + return; + } + + ItemStack remainder = world.itematic$createStack(ItemKeys.GLASS_BOTTLE); + if (ingredient.get().isEmpty()) { + ingredient.set(remainder); + } else { + ItemScatterer.spawn(world, pos.getX(), pos.getY(), pos.getZ(), remainder); + } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java index 7396b402..dd4abe19 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java @@ -5,7 +5,6 @@ import net.errorcraft.itematic.access.component.type.BundleContentsComponentBuilderAccess; import net.errorcraft.itematic.item.holder.rule.ItemHolderRules; import net.minecraft.component.type.BundleContentsComponent; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.math.Fraction; import org.objectweb.asm.Opcodes; @@ -121,10 +120,10 @@ private Fraction calculateFromDataComponent(ItemStack stack) { method = "add(Lnet/minecraft/item/ItemStack;)I", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/Item;canBeNested()Z" + target = "Lnet/minecraft/component/type/BundleContentsComponent;canBeBundled(Lnet/minecraft/item/ItemStack;)Z" ) ) - private boolean checkFromDataComponent(Item instance, ItemStack stack) { + private boolean checkFromDataComponent(ItemStack stack) { return this.rules.canOccupy(stack); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentAccessor.java new file mode 100644 index 00000000..468ec9af --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentAccessor.java @@ -0,0 +1,13 @@ +package net.errorcraft.itematic.mixin.component.type; + +import net.minecraft.component.type.ConsumableComponent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ConsumableComponent.class) +public interface ConsumableComponentAccessor { + @Accessor("PARTICLES_AND_SOUND_TICK_THRESHOLD") + static float consumeEffectsThreshold() { + throw new AssertionError(); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentExtender.java new file mode 100644 index 00000000..41b7c253 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/ConsumableComponentExtender.java @@ -0,0 +1,33 @@ +package net.errorcraft.itematic.mixin.component.type; + +import com.mojang.datafixers.kinds.App; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.component.type.ConsumableComponent; +import net.minecraft.item.consume.UseAction; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +import java.util.List; +import java.util.function.Function; + +@Mixin(ConsumableComponent.class) +public class ConsumableComponentExtender { + @ModifyArg( + method = "", + at = @At( + value = "INVOKE", + target = "Lcom/mojang/serialization/codecs/RecordCodecBuilder;create(Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;", + remap = false + ) + ) + private static Function, ? extends App, ConsumableComponent>> createDoNotUseAllFields(Function, ? extends App, ConsumableComponent>> builder) { + return instance -> instance.group( + SoundEvent.ENTRY_CODEC.optionalFieldOf("sound", SoundEvents.ENTITY_GENERIC_EAT).forGetter(ConsumableComponent::sound), + Codec.BOOL.optionalFieldOf("has_consume_particles", true).forGetter(ConsumableComponent::hasConsumeParticles) + ).apply(instance, (sound, hasConsumeParticles) -> new ConsumableComponent(0.0f, UseAction.NONE, sound, hasConsumeParticles, List.of())); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/FoodComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/FoodComponentExtender.java deleted file mode 100644 index a0515fdf..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/component/type/FoodComponentExtender.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.errorcraft.itematic.mixin.component.type; - -import net.minecraft.component.type.FoodComponent; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -public class FoodComponentExtender { - @Mixin(FoodComponent.Builder.class) - public static class BuilderExtender { - @Redirect( - method = "usingConvertsTo", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackReturnEmptyStack(ItemConvertible item) { - return ItemStack.EMPTY; - } - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java index 25fa63c9..a8bb908a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java @@ -11,6 +11,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.EyeOfEnderEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.entity.decoration.GlowItemFrameEntity; @@ -19,7 +20,6 @@ import net.minecraft.entity.projectile.*; import net.minecraft.entity.vehicle.*; import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -440,21 +440,21 @@ private static EntityType.Builder setWindChargeInitializerCode } @Inject( - method = "create(Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity;", + method = "create(Lnet/minecraft/world/World;Lnet/minecraft/entity/SpawnReason;)Lnet/minecraft/entity/Entity;", at = @At( value = "INVOKE", target = "Lnet/minecraft/entity/EntityType$EntityFactory;create(Lnet/minecraft/entity/EntityType;Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity;" ), cancellable = true ) - private void createUseEntityInitializerIfPresent(World world, CallbackInfoReturnable<@Nullable T> info) { + private void createUseEntityInitializerIfPresent(World world, SpawnReason reason, CallbackInfoReturnable info) { if (this.initializer == null) { return; } EntityInitializer initializer = this.initializer; // Copy to a local and set the field to null, so we don't get a StackOverflowError this.initializer = null; - info.setReturnValue((T) initializer.create(this.actionContext)); + info.setReturnValue((T) initializer.create(this.actionContext, reason)); this.actionContext = null; } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java index 51597db8..516e331f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java @@ -10,14 +10,9 @@ import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.WeaponAttackDamageDataComponent; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.ConsumableItemComponent; import net.errorcraft.itematic.item.component.components.LifeSavingItemComponent; -import net.errorcraft.itematic.item.event.ItemEvents; -import net.errorcraft.itematic.world.action.context.ActionContext; -import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; -import net.minecraft.component.type.FoodComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; @@ -34,8 +29,6 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.ItemTags; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundEvent; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; import net.minecraft.util.Hand; @@ -45,7 +38,10 @@ import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -78,9 +74,6 @@ public abstract class LivingEntityExtender extends Entity implements LivingEntit @Shadow public abstract boolean isUsingItem(); - @Shadow - public abstract ItemStack eatFood(World world, ItemStack stack, FoodComponent foodComponent); - @Shadow public abstract AttributeContainer getAttributes(); @@ -88,7 +81,7 @@ public abstract class LivingEntityExtender extends Entity implements LivingEntit public abstract double getAttributeBaseValue(RegistryEntry attribute); @Shadow - protected abstract void spawnItemParticles(ItemStack stack, int count); + public abstract void spawnItemParticles(ItemStack stack, int count); @Unique private int itemUsedTicks; @@ -97,15 +90,6 @@ public LivingEntityExtender(EntityType type, World world) { super(type, world); } - @Redirect( - method = "eatFood", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;decrementUnlessCreative(ILnet/minecraft/entity/LivingEntity;)V" - ) - ) - private void doNotDecrementItemStack(ItemStack instance, int amount, LivingEntity entity) {} - @Redirect( method = "getPreferredEquipmentSlot", at = @At( @@ -219,17 +203,6 @@ private boolean isOfForPiglinHeadUseRegistryKeyCheck(ItemStack instance, Item it return instance.itematic$isOf(ItemKeys.PIGLIN_HEAD); } - @Redirect( - method = "getVisibilityBoundingBox", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForDragonHeadUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.DRAGON_HEAD); - } - @Redirect( method = "tryUseTotem", at = @At( @@ -349,49 +322,6 @@ private int keepAtConstantWhenUseDurationIsIndefinite(int original) { return original; } - @Inject( - method = "shouldSpawnConsumptionEffects", - at = @At("HEAD"), - cancellable = true - ) - private void checkMaxUseTime(CallbackInfoReturnable info) { - if (this.activeItemStack.getMaxUseTime((LivingEntity)(Object) this) <= 0) { - info.setReturnValue(false); - } - } - - @Inject( - method = "spawnConsumptionEffects", - at = @At("HEAD"), - cancellable = true - ) - private void alwaysSpawnItemParticlesAndStoreConsumableSound(ItemStack stack, int particleCount, CallbackInfo info, @Share("consumeSound") LocalRef> consumeSound) { - this.spawnItemParticles(stack, particleCount); - this.activeItemStack.itematic$getComponent(ItemComponentTypes.CONSUMABLE) - .map(ConsumableItemComponent::sound) - .ifPresentOrElse(consumeSound::set, info::cancel); - } - - @Redirect( - method = "spawnConsumptionEffects", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;spawnItemParticles(Lnet/minecraft/item/ItemStack;I)V" - ) - ) - private void doNotSpawnItemParticlesNormally(LivingEntity instance, ItemStack stack, int count) {} - - @ModifyArg( - method = "spawnConsumptionEffects", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;playSound(Lnet/minecraft/sound/SoundEvent;FF)V" - ) - ) - private SoundEvent playSoundUseItemComponent(SoundEvent sound, @Share("consumeSound") LocalRef> consumeSound) { - return consumeSound.get().value(); - } - @Inject( method = "spawnItemParticles", at = @At("HEAD"), @@ -404,7 +334,7 @@ private void shouldSpawnParticles(ItemStack stack, int count, CallbackInfo info) } @Redirect( - method = "tickFallFlying", + method = "isFallFlyingAllowed", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" @@ -462,17 +392,6 @@ public boolean disablesShield() { return this.isHolding(stack -> stack.itematic$isOf(key)); } - @Override - public void itematic$eatFood(World world, ItemStack stack, FoodComponent food, ItemStackConsumer resultStackConsumer) { - this.eatFood(world, stack, food); - if (world instanceof ServerWorld serverWorld) { - ActionContext context = ActionContext.builder(serverWorld, stack, resultStackConsumer, this.getActiveHand()) - .entityPosition(ActionContextParameter.THIS, this) - .build(); - stack.itematic$invokeEvent(ItemEvents.EAT_ITEM, context); - } - } - @Override public void itematic$startUsingHand(Hand hand, int ticks) { ItemStack stack = this.getStackInHand(hand); @@ -492,7 +411,7 @@ public boolean disablesShield() { public double itematic$getAttackDamage() { Double baseAttackDamage = this.getBaseAttackDamage(this.getMainHandStack()); return ((AttributeContainerAccess) this.getAttributes()) - .itematic$getValue(EntityAttributes.GENERIC_ATTACK_DAMAGE, baseAttackDamage); + .itematic$getValue(EntityAttributes.ATTACK_DAMAGE, baseAttackDamage); } @Unique @@ -508,7 +427,7 @@ private Double getBaseAttackDamage(ItemStack stack) { double damage = weaponAttackDamage.getDamage(stack, this); if (weaponAttackDamage.shouldAddBase(stack, this)) { - return damage + this.getAttributeBaseValue(EntityAttributes.GENERIC_ATTACK_DAMAGE); + return damage + this.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE); } return damage; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java index 0be65a52..8e474cf8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java @@ -167,7 +167,7 @@ private ItemStack newItemStackUseRegistryEntry(ItemConvertible item, @Share("ite slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/entity/attribute/EntityAttributes;GENERIC_ATTACK_DAMAGE:Lnet/minecraft/registry/entry/RegistryEntry;", + target = "Lnet/minecraft/entity/attribute/EntityAttributes;ATTACK_DAMAGE:Lnet/minecraft/registry/entry/RegistryEntry;", opcode = Opcodes.GETSTATIC ) ) diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java index 5559323e..1c50f2cd 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java @@ -1,25 +1,26 @@ package net.errorcraft.itematic.mixin.entity.mob; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; +import net.minecraft.entity.EntityData; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.mob.PatrolEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.world.LocalDifficulty; import net.minecraft.world.ServerWorldAccess; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PatrolEntity.class) public class PatrolEntityExtender { - @Redirect( + @Inject( method = "initialize", at = @At( value = "INVOKE", - target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup, ServerWorldAccess world) { - return RaidUtil.createOminousBanner(world, bannerPatternLookup); + private void createOminousBannerSetDataDrivenItemStack(ServerWorldAccess world, LocalDifficulty difficulty, SpawnReason spawnReason, EntityData entityData, CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(world); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SlimeEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SlimeEntityExtender.java index 990e15ad..b720c574 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SlimeEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SlimeEntityExtender.java @@ -4,7 +4,6 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttribute; -import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.mob.SlimeEntity; import net.minecraft.item.Item; import net.minecraft.registry.RegistryKey; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java index b8422d46..af6b6e51 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java @@ -7,7 +7,6 @@ import net.minecraft.entity.passive.AllayEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -15,6 +14,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.util.function.Predicate; + @Mixin(AllayEntity.class) public abstract class AllayEntityExtender extends MobEntityExtender { protected AllayEntityExtender(EntityType entityType, World world) { @@ -25,11 +26,11 @@ protected AllayEntityExtender(EntityType entityType, Wor method = "matchesDuplicationIngredient", at = @At( value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;test(Lnet/minecraft/item/ItemStack;)Z" + target = "Ljava/util/function/Predicate;test(Ljava/lang/Object;)Z" ) ) - private boolean testForDuplicationItemUseRegistryKeyCheck(Ingredient instance, ItemStack itemStack) { - return itemStack.itematic$isOf(ItemKeys.AMETHYST_SHARD); + private boolean testForDuplicationItemUseRegistryKeyCheck(Predicate instance, T t) { + return ((ItemStack) t).itematic$isOf(ItemKeys.AMETHYST_SHARD); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/GoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/GoatEntityExtender.java index fc51a1e3..45423203 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/GoatEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/GoatEntityExtender.java @@ -15,7 +15,9 @@ import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +import java.util.function.Function; @Mixin(GoatEntity.class) public abstract class GoatEntityExtender extends MobEntityExtender { @@ -23,17 +25,19 @@ protected GoatEntityExtender(EntityType entityType, Worl super(entityType, world); } - @Redirect( + @ModifyArg( method = "getGoatHornStack", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/GoatHornItem;getStackForInstrument(Lnet/minecraft/item/Item;Lnet/minecraft/registry/entry/RegistryEntry;)Lnet/minecraft/item/ItemStack;" + target = "Ljava/util/Optional;map(Ljava/util/function/Function;)Ljava/util/Optional;" ) ) - private ItemStack getStackForInstrumentUseCreateStack(Item item, RegistryEntry instrument) { - ItemStack stack = this.getWorld().itematic$createStack(ItemKeys.GOAT_HORN); - stack.set(DataComponentTypes.INSTRUMENT, instrument); - return stack; + private Function, ? extends ItemStack> getStackForInstrumentUseCreateStack(Function, ? extends ItemStack> mapper) { + return instrument -> { + ItemStack stack = this.getWorld().itematic$createStack(ItemKeys.GOAT_HORN); + stack.set(DataComponentTypes.INSTRUMENT, instrument); + return stack; + }; } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java index 8d830e67..992eb5c0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java @@ -1,17 +1,14 @@ package net.errorcraft.itematic.mixin.entity.passive; -import com.google.common.collect.ImmutableMap; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.DyeItemComponent; import net.errorcraft.itematic.mixin.entity.mob.MobEntityExtender; import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.passive.SheepEntity; import net.minecraft.item.DyeItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.recipe.input.CraftingRecipeInput; import net.minecraft.registry.RegistryKey; @@ -20,14 +17,12 @@ import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.function.Function; import java.util.function.Predicate; @@ -37,26 +32,6 @@ public abstract class SheepEntityExtender extends MobEntityExtender { @Shadow public abstract DyeColor getColor(); - @Unique - private static final Map> DYE_TO_WOOL = new ImmutableMap.Builder>() - .put(DyeColor.WHITE, ItemKeys.WHITE_WOOL) - .put(DyeColor.ORANGE, ItemKeys.ORANGE_WOOL) - .put(DyeColor.MAGENTA, ItemKeys.MAGENTA_WOOL) - .put(DyeColor.LIGHT_BLUE, ItemKeys.LIGHT_BLUE_WOOL) - .put(DyeColor.YELLOW, ItemKeys.YELLOW_WOOL) - .put(DyeColor.LIME, ItemKeys.LIME_WOOL) - .put(DyeColor.PINK, ItemKeys.PINK_WOOL) - .put(DyeColor.GRAY, ItemKeys.GRAY_WOOL) - .put(DyeColor.LIGHT_GRAY, ItemKeys.LIGHT_GRAY_WOOL) - .put(DyeColor.CYAN, ItemKeys.CYAN_WOOL) - .put(DyeColor.PURPLE, ItemKeys.PURPLE_WOOL) - .put(DyeColor.BLUE, ItemKeys.BLUE_WOOL) - .put(DyeColor.BROWN, ItemKeys.BROWN_WOOL) - .put(DyeColor.GREEN, ItemKeys.GREEN_WOOL) - .put(DyeColor.RED, ItemKeys.RED_WOOL) - .put(DyeColor.BLACK, ItemKeys.BLACK_WOOL) - .build(); - protected SheepEntityExtender(EntityType entityType, World world) { super(entityType, world); } @@ -72,17 +47,6 @@ private boolean isOfForShearsUseRegistryKeyCheck(ItemStack instance, Item item) return instance.itematic$isOf(ItemKeys.SHEARS); } - @Redirect( - method = "sheared", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/passive/SheepEntity;dropItem(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/entity/ItemEntity;" - ) - ) - private ItemEntity dropItemUseRegistryKey(SheepEntity instance, ItemConvertible item, int yOffset) { - return this.itematic$dropItem(DYE_TO_WOOL.get(this.getColor()), yOffset); - } - @Redirect( method = "getChildColor", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SnowGolemEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SnowGolemEntityExtender.java index 819f1b4a..f61b439e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SnowGolemEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SnowGolemEntityExtender.java @@ -6,7 +6,6 @@ import net.minecraft.entity.passive.GolemEntity; import net.minecraft.entity.passive.SnowGolemEntity; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; @@ -32,17 +31,6 @@ private boolean isOfForShearsUseRegistryKeyCheck(ItemStack instance, Item item) return instance.itematic$isOf(ItemKeys.SHEARS); } - @Redirect( - method = "sheared", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForCarvedPumpkinUseCreateStack(ItemConvertible item) { - return this.getWorld().itematic$createStack(ItemKeys.CARVED_PUMPKIN); - } - @Override protected @Nullable RegistryKey pickBlockKey() { return ItemKeys.SNOW_GOLEM_SPAWN_EGG; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java index cd2e88b5..2fe0f776 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java @@ -4,7 +4,6 @@ import com.llamalad7.mixinextras.sugar.Local; import net.errorcraft.itematic.entity.passive.VillagerEntityUtil; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.ItematicItemTags; import net.errorcraft.itematic.registry.ItematicRegistryKeys; import net.errorcraft.itematic.village.trade.Trade; import net.minecraft.entity.EntityType; @@ -38,17 +37,6 @@ protected VillagerEntityExtender(EntityType entityType, super(entityType, world); } - @Redirect( - method = "canGather", - at = @At( - value = "INVOKE", - target = "Ljava/util/Set;contains(Ljava/lang/Object;)Z" - ) - ) - private boolean containsForGatherableItemsUseItemTagCheck(Set instance, Object o, ItemStack stack) { - return stack.isIn(ItematicItemTags.VILLAGER_GATHERABLE_ITEMS); - } - @Redirect( method = "canGather", at = @At( @@ -62,6 +50,7 @@ private boolean containsForGatherableItemsUseItemTagCheck(ImmutableSet ins if (tag == null) { return false; } + return stack.isIn(tag); } @@ -121,8 +110,9 @@ protected void fillRecipes(LootContext context) { if (tag == null) { return; } + Registry trades = context.getWorld().getRegistryManager().get(ItematicRegistryKeys.TRADE); - this.fillRecipesFromPool(trades.getOrCreateEntryList(tag), 2, context); + this.fillRecipesFromPool(trades.getEntryList(tag).orElseThrow(), 2, context); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java index 479f5e51..33f85f52 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java @@ -69,17 +69,6 @@ private ItemStack newItemStackForMilkBucketUseCreateStack(ItemConvertible item) return this.getWorld().itematic$createStack(ItemKeys.MILK_BUCKET); } - @Redirect( - method = "getDrinkSound", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForMilkBucketUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.MILK_BUCKET); - } - @Redirect( method = "interactMob", at = @At( @@ -95,7 +84,7 @@ private boolean isOfForVillagerSpawnEggUseRegistryKeyCheck(ItemStack instance, I protected void fillRecipes(LootContext context) { Registry trades = context.getWorld().getRegistryManager().get(ItematicRegistryKeys.TRADE); for (TagKey trade : TRADE_TO_AMOUNT.keySet()) { - this.fillRecipesFromPool(trades.getOrCreateEntryList(trade), TRADE_TO_AMOUNT.getInt(trade), context); + this.fillRecipesFromPool(trades.getEntryList(trade).orElseThrow(), TRADE_TO_AMOUNT.getInt(trade), context); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java index 7dc1873a..83b54c1e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java @@ -7,10 +7,10 @@ import net.minecraft.entity.passive.WolfEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -33,18 +33,6 @@ private ItemStack getDefaultStackForArmadilloScuteUseCreateStack(Item instance) return this.getWorld().itematic$createStack(ItemKeys.ARMADILLO_SCUTE); } - @Redirect( - method = "interactMob", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private boolean isOfForBoneUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BONE); - } - @Redirect( method = "interactMob", at = @At( @@ -54,13 +42,14 @@ private boolean isOfForBoneUseRegistryKeyCheck(ItemStack instance, Item item) { ), slice = @Slice( from = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/passive/WolfEntity;setTarget(Lnet/minecraft/entity/LivingEntity;)V" + value = "FIELD", + target = "Lnet/minecraft/item/Items;WOLF_ARMOR:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC ) ) ) - private boolean isOfForBoneNotTamedUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BONE); + private boolean isOfForWolfArmorUseRegistryKeyCheck(ItemStack instance, Item item) { + return instance.itematic$isOf(ItemKeys.WOLF_ARMOR); } @Redirect( @@ -73,12 +62,13 @@ private boolean isOfForBoneNotTamedUseRegistryKeyCheck(ItemStack instance, Item slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/item/Items;WOLF_ARMOR:Lnet/minecraft/item/Item;" + target = "Lnet/minecraft/item/Items;SHEARS:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC ) ) ) - private boolean isOfForWolfArmorUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.WOLF_ARMOR); + private boolean isOfForShearsUseRegistryKeyCheck(ItemStack instance, Item item) { + return instance.itematic$isOf(ItemKeys.SHEARS); } @Redirect( @@ -90,24 +80,13 @@ private boolean isOfForWolfArmorUseRegistryKeyCheck(ItemStack instance, Item ite ), slice = @Slice( from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;SHEARS:Lnet/minecraft/item/Item;" + value = "INVOKE", + target = "Lnet/minecraft/entity/passive/WolfEntity;setTarget(Lnet/minecraft/entity/LivingEntity;)V" ) ) ) - private boolean isOfForShearsUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.SHEARS); - } - - @Redirect( - method = "interactMob", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;test(Lnet/minecraft/item/ItemStack;)Z" - ) - ) - private boolean testForWolfArmorRepairItemUseRegistryKeyCheck(Ingredient instance, ItemStack stack) { - return stack.itematic$isOf(ItemKeys.ARMADILLO_SCUTE); + private boolean isOfForBoneNotTamedUseRegistryKeyCheck(ItemStack instance, Item item) { + return instance.itematic$isOf(ItemKeys.BONE); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ItemCooldownManagerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ItemCooldownManagerExtender.java new file mode 100644 index 00000000..0a23d492 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ItemCooldownManagerExtender.java @@ -0,0 +1,24 @@ +package net.errorcraft.itematic.mixin.entity.player; + +import net.minecraft.entity.player.ItemCooldownManager; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.DefaultedRegistry; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ItemCooldownManager.class) +public class ItemCooldownManagerExtender { + @Redirect( + method = "getGroup", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/registry/DefaultedRegistry;getId(Ljava/lang/Object;)Lnet/minecraft/util/Identifier;" + ) + ) + private Identifier getIdUseRegistryEntry(DefaultedRegistry instance, T t, ItemStack stack) { + return stack.itematic$key().getValue(); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java index a0d57c44..719afbca 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java @@ -25,7 +25,6 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; @@ -87,17 +86,6 @@ private Stat getOrCreateStatForActiveItemUseRegistryEntry(StatType Stat doNotGetOrCreateStat(StatType instance, T key) { - return null; - } - @Redirect( method = "isUsingSpyglass", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java index c45bdd96..3e522858 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java @@ -1,18 +1,18 @@ package net.errorcraft.itematic.mixin.entity.raid; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; import net.minecraft.entity.EntityType; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.mob.PatrolEntity; import net.minecraft.entity.raid.RaiderEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(RaiderEntity.class) public class RaiderEntityExtender extends PatrolEntity { @@ -20,32 +20,54 @@ protected RaiderEntityExtender(EntityType entityType, Wo super(entityType, world); } - @Redirect( - method = { "onDeath", "loot" }, + @Inject( + method = "isCaptain", at = @At( value = "INVOKE", - target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.getWorld(), bannerPatternLookup); + private void createOminousBannerSetDataDrivenItemStack(CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(this.getWorld()); } - @Mixin(RaiderEntity.PickupBannerAsLeaderGoal.class) - public static class PickupBannerAsLeaderGoalExtender { + @Inject( + method = "loot", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + ) + ) + private void createOminousBannerSetDataDrivenItemStack(CallbackInfo info) { + RaidUtil.createOminousBanner(this.getWorld()); + } + + @Inject( + method = "method_16483", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + ) + ) + private static void createOminousBannerSetDataDrivenItemStack(ItemEntity itemEntity, CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(itemEntity.getWorld()); + } + + @Mixin(RaiderEntity.PickUpBannerAsLeaderGoal.class) + public static class PickUpBannerAsLeaderGoalExtender { @Shadow @Final private T actor; - @Redirect( - method = "canStart", + @Inject( + method = "shouldStop", at = @At( value = "INVOKE", - target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.actor.getWorld(), bannerPatternLookup); + private void createOminousBannerSetDataDrivenItemStack(CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(this.actor.getWorld()); } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java index dbe09861..15ddeb7d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java @@ -1,17 +1,12 @@ package net.errorcraft.itematic.mixin.entity.vehicle; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.ItematicItemTags; import net.minecraft.entity.EntityType; import net.minecraft.entity.vehicle.FurnaceMinecartEntity; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(FurnaceMinecartEntity.class) public abstract class FurnaceMinecartEntityExtender extends VehicleEntityExtender { @@ -19,17 +14,6 @@ public FurnaceMinecartEntityExtender(EntityType type, World world) { super(type, world); } - @Redirect( - method = "interact", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;test(Lnet/minecraft/item/ItemStack;)Z" - ) - ) - private boolean interactTestUseItemTagCheck(Ingredient instance, ItemStack itemStack) { - return itemStack.isIn(ItematicItemTags.FURNACE_MINECART_FUEL); - } - @Override protected RegistryKey asItemKey() { return ItemKeys.FURNACE_MINECART; diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java new file mode 100644 index 00000000..7abdeeda --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java @@ -0,0 +1,43 @@ +package net.errorcraft.itematic.mixin.item; + +import net.minecraft.item.ArmorMaterials; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ArmorMaterials.class) +public interface ArmorMaterialsAccessor { + @Accessor("LEATHER_ENCHANTABILITY") + static int leatherEnchantability() { + throw new AssertionError(); + } + + @Accessor("CHAIN_ENCHANTABILITY") + static int chainEnchantability() { + throw new AssertionError(); + } + + @Accessor("IRON_ENCHANTABILITY") + static int ironEnchantability() { + throw new AssertionError(); + } + + @Accessor("GOLD_ENCHANTABILITY") + static int goldEnchantability() { + throw new AssertionError(); + } + + @Accessor("DIAMOND_ENCHANTABILITY") + static int diamondEnchantability() { + throw new AssertionError(); + } + + @Accessor("TURTLE_ENCHANTABILITY") + static int turtleEnchantability() { + throw new AssertionError(); + } + + @Accessor("NETHERITE_ENCHANTABILITY") + static int netheriteEnchantability() { + throw new AssertionError(); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/FuelRegistryExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/FuelRegistryExtender.java new file mode 100644 index 00000000..c970145f --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/item/FuelRegistryExtender.java @@ -0,0 +1,54 @@ +package net.errorcraft.itematic.mixin.item; + +import it.unimi.dsi.fastutil.objects.ObjectSortedSet; +import net.minecraft.item.FuelRegistry; +import net.minecraft.item.Item; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.entry.RegistryEntryList; +import net.minecraft.registry.tag.TagKey; +import net.minecraft.resource.featuretoggle.FeatureSet; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.Optional; +import java.util.function.Predicate; + +public class FuelRegistryExtender { + @Mixin(FuelRegistry.Builder.class) + public static class BuilderExtender { + @Redirect( + method = "remove", + at = @At( + value = "INVOKE", + target = "Lit/unimi/dsi/fastutil/objects/ObjectSortedSet;removeIf(Ljava/util/function/Predicate;)Z", + remap = false + ) + ) + private boolean doNotRemove(ObjectSortedSet instance, Predicate predicate) { + return false; + } + + @Redirect( + method = "add(Lnet/minecraft/registry/tag/TagKey;I)Lnet/minecraft/item/FuelRegistry$Builder;", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/registry/RegistryWrapper;getOptional(Lnet/minecraft/registry/tag/TagKey;)Ljava/util/Optional;" + ) + ) + private Optional> doNotGet(RegistryWrapper instance, TagKey tagKey) { + return Optional.empty(); + } + + @Redirect( + method = "add(ILnet/minecraft/item/Item;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/Item;isEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z" + ) + ) + private boolean doNotAdd(Item instance, FeatureSet featureSet) { + return false; + } + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/HoneyBottleItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/HoneyBottleItemAccessor.java deleted file mode 100644 index 3eb4253f..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/HoneyBottleItemAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.HoneyBottleItem; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(HoneyBottleItem.class) -public interface HoneyBottleItemAccessor { - @Accessor("MAX_USE_TIME") - static int useDuration() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index 43e116db..3796ccae 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -6,12 +6,14 @@ import net.errorcraft.itematic.component.type.UseDurationDataComponent; import net.errorcraft.itematic.inventory.StackReferenceUtil; import net.errorcraft.itematic.item.ItemBase; +import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemUtil; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentSet; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.*; +import net.errorcraft.itematic.item.component.components.BlockItemComponent; +import net.errorcraft.itematic.item.component.components.DamageableItemComponent; import net.errorcraft.itematic.item.event.ItemEvent; import net.errorcraft.itematic.item.event.ItemEventMap; import net.errorcraft.itematic.item.event.ItemEvents; @@ -21,7 +23,6 @@ import net.fabricmc.fabric.api.item.v1.FabricItem; import net.minecraft.block.BlockState; import net.minecraft.component.ComponentMap; -import net.minecraft.component.ComponentType; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.component.type.ToolComponent; @@ -34,8 +35,10 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; +import net.minecraft.item.consume.UseAction; import net.minecraft.item.tooltip.TooltipData; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.entry.RegistryEntry; @@ -44,7 +47,10 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.util.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.ClickType; +import net.minecraft.util.Hand; +import net.minecraft.util.StringHelper; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.spongepowered.asm.mixin.*; @@ -84,31 +90,35 @@ private void checkStackableItemComponent(CallbackInfoReturnable info) { } } - @Inject( - method = "use", - at = @At("HEAD"), - cancellable = true - ) - public void useUseItemComponent(World world, PlayerEntity user, Hand hand, CallbackInfoReturnable> info) { + /** + * @author ErrorCraft + * @reason Uses the ItemComponent implementation for data-driven items. + */ + @Overwrite + public ActionResult use(World world, PlayerEntity user, Hand hand) { ItemStack stack = user.getStackInHand(hand); StackReference stackReference = StackReferenceUtil.of(stack); - ActionResult result = ActionResult.PASS; + ItemResult result = ItemResult.PASS; for (ItemComponent component : this.itemComponents) { - ActionResult newResult = component.use(world, user, hand, stack, stackReference::set); - if (newResult == ActionResult.FAIL) { - info.setReturnValue(TypedActionResult.fail(stackReference.get())); - return; - } - result = result.itematic$merge(newResult); + ItemResult newResult = component.use(world, user, hand, stack, stackReference::set); + result = result.max(newResult); } if (world instanceof ServerWorld serverWorld) { ActionContext context = ActionContext.builder(serverWorld, stack, stackReference::set, hand) .entityPosition(ActionContextParameter.THIS, user) .build(); - this.itematic$invokeEvent(ItemEvents.USE, context); + if (this.itematic$invokeEvent(ItemEvents.USE, context)) { + result = result.max(ItemResult.CONSUME); + } + } + + ActionResult trueResult = result.toActionResult(); + if (trueResult instanceof ActionResult.Success success) { + return success.withNewHandStack(stackReference.get()); } - info.setReturnValue(new TypedActionResult<>(result, stackReference.get())); + + return trueResult; } /** @@ -119,13 +129,10 @@ public void useUseItemComponent(World world, PlayerEntity user, Hand hand, Callb public ActionResult useOnBlock(ItemUsageContext context) { ItemStack stack = context.getStack(); StackReference stackReference = StackReferenceUtil.of(stack); - ActionResult result = ActionResult.PASS; + ItemResult result = ItemResult.PASS; for (ItemComponent component : this.itemComponents) { - ActionResult newResult = component.useOnBlock(context, stackReference::set); - if (newResult == ActionResult.FAIL) { - return newResult; - } - result = result.itematic$merge(newResult); + ItemResult newResult = component.useOnBlock(context, stackReference::set); + result = result.max(newResult); } if (context.getWorld() instanceof ServerWorld serverWorld) { @@ -134,11 +141,18 @@ public ActionResult useOnBlock(ItemUsageContext context) { .position(ActionContextParameter.TARGET, context.getBlockPos()) .side(context.getSide()) .build(); - this.itematic$invokeEvent(ItemEvents.USE_ON_BLOCK, actionContext); + if (this.itematic$invokeEvent(ItemEvents.USE_ON_BLOCK, actionContext)) { + result = result.max(ItemResult.CONSUME); + } } tryUpdateItemStack(context.getPlayer(), context.getHand(), stack, stackReference); - return result; + ActionResult trueResult = result.toActionResult(); + if (trueResult instanceof ActionResult.Success success) { + trueResult = success.withNewHandStack(stackReference.get()); + } + + return trueResult; } /** @@ -148,13 +162,10 @@ public ActionResult useOnBlock(ItemUsageContext context) { @Overwrite public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) { StackReference stackReference = StackReferenceUtil.of(stack); - ActionResult result = ActionResult.PASS; + ItemResult result = ItemResult.PASS; for (ItemComponent component : this.itemComponents) { - ActionResult newResult = component.useOnEntity(user, entity, hand, stack, stackReference::set); - if (newResult == ActionResult.FAIL) { - return newResult; - } - result = result.itematic$merge(newResult); + ItemResult newResult = component.useOnEntity(user, entity, hand, stack, stackReference::set); + result = result.max(newResult); } if (user.getWorld() instanceof ServerWorld serverWorld) { @@ -162,11 +173,18 @@ public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity .entityPosition(ActionContextParameter.THIS, user) .entityPosition(ActionContextParameter.TARGET, entity) .build(); - this.itematic$invokeEvent(ItemEvents.USE_ON_ENTITY, context); + if (this.itematic$invokeEvent(ItemEvents.USE_ON_ENTITY, context)) { + result = result.max(ItemResult.CONSUME); + } } tryUpdateItemStack(user, hand, stack, stackReference); - return result; + ActionResult trueResult = result.toActionResult(); + if (trueResult instanceof ActionResult.Success success) { + trueResult = success.withNewHandStack(stackReference.get()); + } + + return trueResult; } /** @@ -346,28 +364,6 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List type) { - return instance.itematic$hasComponent(ItemComponentTypes.ENCHANTABLE); - } - @Inject( method = "canMine", at = @At("HEAD"), @@ -403,18 +399,6 @@ private boolean isCorrectForDropsPassItemStack(ToolComponent instance, BlockStat return instance.itematic$isCorrectForDrops(stack, state); } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public boolean canRepair(ItemStack stack, ItemStack ingredient) { - return this.itematic$getComponent(ItemComponentTypes.REPAIRABLE) - .map(RepairableItemComponent::items) - .map(ingredient::isIn) - .orElse(false); - } - @Inject( method = "hasGlint", at = @At("HEAD"), @@ -426,15 +410,6 @@ public void checkPointableItemComponent(ItemStack stack, CallbackInfoReturnable< } } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public boolean hasRecipeRemainder() { - return this.itematic$hasComponent(ItemComponentTypes.RECIPE_REMAINDER); - } - /** * @author ErrorCraft * @reason Uses the ItemComponent implementation for data-driven items. @@ -446,17 +421,6 @@ public boolean canBeNested() { .orElse(true); } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public int getEnchantability() { - return this.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) - .map(EnchantableItemComponent::enchantability) - .orElse(0); - } - /** * @author ErrorCraft * @reason Uses the ItemComponent implementation for data-driven items. @@ -621,19 +585,10 @@ private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnabl @Override public boolean itematic$mayStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { return this.itematic$getComponent(ItemComponentTypes.FOOD) - .map(c -> c.mayStartUsing(user)) + .map(c -> c.mayStartUsing(user, stack)) .orElse(true); } - @Override - public ItemStack getRecipeRemainder(ItemStack stack) { - // Use the ItemComponent implementation for data-driven items, so we don't get a NullPointerException - return this.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } - @Override public boolean canBeEnchantedWith(ItemStack stack, RegistryEntry enchantment, EnchantingContext context) { return true; @@ -661,10 +616,26 @@ private ComponentMap initializeComponents() { component.addComponents(componentsBuilder); component.addAttributeModifiers(attributeModifiersBuilder, this.itemComponents); } + AttributeModifiersComponent attributeModifiers = attributeModifiersBuilder.build(); if (!attributeModifiers.modifiers().isEmpty()) { componentsBuilder.add(DataComponentTypes.ATTRIBUTE_MODIFIERS, attributeModifiers); } + return COMPONENT_INTERNER.intern(componentsBuilder.build()); } + + @Mixin(Item.Settings.class) + public static class SettingsExtender { + @Redirect( + method = "useRemainder", + at = @At( + value = "NEW", + target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" + ) + ) + private ItemStack newItemStackUseEmptyItemStack(ItemConvertible item) { + return ItemStack.EMPTY; + } + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java index 0f596ef0..1aa7bd91 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java @@ -1,9 +1,10 @@ package net.errorcraft.itematic.mixin.item; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.serialization.Codec; import net.errorcraft.itematic.access.item.ItemStackAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; @@ -23,7 +24,6 @@ import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.fabricmc.fabric.api.item.v1.EnchantingContext; import net.fabricmc.fabric.api.item.v1.FabricItemStack; -import net.minecraft.advancement.criterion.ItemDurabilityChangedCriterion; import net.minecraft.block.BlockState; import net.minecraft.component.ComponentChanges; import net.minecraft.component.ComponentHolder; @@ -38,7 +38,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUsageContext; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.DefaultedRegistry; import net.minecraft.registry.RegistryKey; @@ -116,6 +115,9 @@ public abstract class ItemStackExtender implements ComponentHolder, ItemStackAcc @Shadow public abstract int getCount(); + @Shadow + protected abstract ItemStack applyRemainderAndCooldown(LivingEntity user, ItemStack stack); + @Unique private final Set activeEvents = new HashSet<>(); @@ -157,9 +159,7 @@ private void registryEntryConstructorSetFields(RegistryEntry entry, int co at = @At("TAIL") ) private void componentChangesConstructorSetFields(RegistryEntry item, int count, ComponentChanges changes, CallbackInfo info) { - this.entry = item; - this.components = ComponentMapImpl.create(item.value().getComponents(), changes); - item.value().postProcessComponents((ItemStack)(Object) this); + this.setFields(item, changes); } @Redirect( @@ -235,44 +235,42 @@ private void checkItemValue(ItemConvertible item, int count, ComponentMapImpl co } @Inject( - method = "useOnBlock", - at = @At("HEAD"), - cancellable = true - ) - public void useOnBlockCheckNullEntry(ItemUsageContext context, CallbackInfoReturnable info) { - if (this.isEmpty()) { - info.setReturnValue(ActionResult.PASS); - } - } - - @Inject( - method = "useOnEntity", + method = { + "use", + "useOnBlock", + "useOnEntity" + }, at = @At("HEAD"), cancellable = true ) - public void useOnEntityCheckNullEntry(PlayerEntity user, LivingEntity entity, Hand hand, CallbackInfoReturnable info) { + public void checkEmptyStackActionResult(CallbackInfoReturnable info) { if (this.isEmpty()) { info.setReturnValue(ActionResult.PASS); } } @Inject( - method = "usageTick", + method = "postHit", at = @At("HEAD"), cancellable = true ) - public void usageTickCheckNullEntry(World world, LivingEntity user, int remainingUseTicks, CallbackInfo info) { + public void checkEmptyStackBoolean(CallbackInfoReturnable info) { if (this.isEmpty()) { - info.cancel(); + info.setReturnValue(false); } } @Inject( - method = "onStoppedUsing", + method = { + "usageTick", + "onStoppedUsing", + "postMine", + "onCraftByPlayer" + }, at = @At("HEAD"), cancellable = true ) - public void onStoppedUsingCheckNullEntry(World world, LivingEntity user, int remainingUseTicks, CallbackInfo info) { + public void checkEmptyStack(CallbackInfo info) { if (this.isEmpty()) { info.cancel(); } @@ -287,6 +285,17 @@ public RegistryEntry getRegistryEntry() { return this.entry; } + @ModifyExpressionValue( + method = "getItem", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;isEmpty()Z" + ) + ) + private boolean isEmptyCheckUnboundRegistryEntry(boolean original) { + return original || !this.entry.hasKeyAndValue(); + } + @Redirect( method = "getItem", at = @At( @@ -430,16 +439,27 @@ private void checkNullRegistryEntry(RegistryEntryList registryEntryList, C } @Inject( - method = "isEnchantable", + method = "canRepairWith", at = @At("HEAD"), cancellable = true ) - public void isEnchantableCheckNullEntry(CallbackInfoReturnable info) { - if (this.entry == null) { + public void containsDataComponentUseItemBehaviorComponent(ItemStack ingredient, CallbackInfoReturnable info) { + if (!this.itematic$hasComponent(ItemComponentTypes.REPAIRABLE)) { info.setReturnValue(false); } } + @ModifyExpressionValue( + method = "isEnchantable", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" + ) + ) + public boolean containsDataComponentUseItemBehaviorComponent(boolean original) { + return original && this.itematic$hasComponent(ItemComponentTypes.ENCHANTABLE); + } + @Inject( method = { "areItemsEqual", @@ -582,15 +602,25 @@ private void postMineUseRegistryEntryNullCheck(World world, BlockState state, Bl } } + @ModifyReturnValue( + method = "calculateDamage", + at = @At("RETURN") + ) + private int limitDamageApplied(int original) { + return this.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) + .map(c -> Math.min(c.maximumDamage((ItemStack)(Object) this) - this.getDamage(), original)) + .orElse(original); + } + @Inject( - method = "damage(ILnet/minecraft/server/world/ServerWorld;Lnet/minecraft/server/network/ServerPlayerEntity;Ljava/util/function/Consumer;)V", + method = "onDurabilityChange", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;setDamage(I)V", shift = At.Shift.AFTER ) ) - private void invokeDamageToolEvent(int amount, ServerWorld world, ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { + private void invokeDamageToolEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { if (this.context == null) { return; } @@ -598,28 +628,14 @@ private void invokeDamageToolEvent(int amount, ServerWorld world, ServerPlayerEn this.itematic$invokeEvent(ItemEvents.DAMAGE_ITEM, this.context); } - @WrapWithCondition( - method = "damage(ILnet/minecraft/server/world/ServerWorld;Lnet/minecraft/server/network/ServerPlayerEntity;Ljava/util/function/Consumer;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/advancement/criterion/ItemDurabilityChangedCriterion;trigger(Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/item/ItemStack;I)V" - ) - ) - private boolean limitDamageApplied(ItemDurabilityChangedCriterion instance, ServerPlayerEntity player, ItemStack stack, int durability, @Local(argsOnly = true) LocalIntRef amount) { - this.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) - .map(c -> Math.min(c.maximumDamage((ItemStack)(Object) this) - this.getDamage(), amount.get())) - .ifPresent(amount::set); - return amount.get() != 0; - } - @Inject( - method = "damage(ILnet/minecraft/server/world/ServerWorld;Lnet/minecraft/server/network/ServerPlayerEntity;Ljava/util/function/Consumer;)V", + method = "onDurabilityChange", at = @At( value = "INVOKE", target = "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V" ) ) - private void invokeBreakToolEvent(int amount, ServerWorld world, ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { + private void invokeBreakToolEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { if (this.context == null) { return; } @@ -643,6 +659,32 @@ private Stat getOrCreateStatUseRegistryEntry(StatType instance, return instance.itematic$getOrCreateStat(this.entry); } + @WrapOperation( + method = "use", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/ActionResult$Success;withNewHandStack(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/util/ActionResult$Success;" + ) + ) + private ActionResult.Success doNotModifyResultingItemStackIfNotUseable(ActionResult.Success instance, ItemStack newHandStack, Operation original) { + if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + return instance; + } + + return original.call(instance, newHandStack); + } + + @Inject( + method = "applyRemainderAndCooldown", + at = @At("HEAD"), + cancellable = true + ) + private void checkForUseableBehavior(LivingEntity user, ItemStack stack, CallbackInfoReturnable info) { + if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + info.setReturnValue((ItemStack)(Object) this); + } + } + /** * @author ErrorCraft * @reason Uses a registry entry on the item stack for data-driven items. @@ -652,6 +694,17 @@ public String toString() { return this.count + " " + this.itematic$key().getValue().toString(); } + @Inject( + method = "hashCode", + at = @At("HEAD"), + cancellable = true + ) + private static void checkEmptyStack(ItemStack stack, CallbackInfoReturnable info) { + if (stack != null && (stack.isEmpty() || !stack.getRegistryEntry().hasKeyAndValue())) { + info.setReturnValue(0); + } + } + @Override public boolean canBeEnchantedWith(RegistryEntry enchantment, EnchantingContext context) { // Use the original implementation again @@ -805,6 +858,17 @@ private void setFields(RegistryEntry entry) { } } + @Unique + private void setFields(RegistryEntry entry, ComponentChanges changes) { + this.entry = entry; + if (entry.hasKeyAndValue()) { + this.components = ComponentMapImpl.create(entry.value().getComponents(), changes); + entry.value().postProcessComponents((ItemStack)(Object) this); + } else { + this.components = new ComponentMapImpl(ComponentMap.EMPTY); + } + } + @Unique private void onItemBroken(Item item, Entity entity, ActionContext context) { if (entity instanceof LivingEntity livingEntity) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/KnowledgeBookItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/KnowledgeBookItemExtender.java index 0893ef70..a3d42a03 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/KnowledgeBookItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/KnowledgeBookItemExtender.java @@ -6,24 +6,12 @@ import net.minecraft.item.KnowledgeBookItem; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; -import net.minecraft.util.TypedActionResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(KnowledgeBookItem.class) public class KnowledgeBookItemExtender { - @Redirect( - method = "use", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/util/TypedActionResult;fail(Ljava/lang/Object;)Lnet/minecraft/util/TypedActionResult;" - ) - ) - private TypedActionResult failResultPassInstead(T data) { - return TypedActionResult.pass(data); - } - @Redirect( method = "use", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/MilkBucketItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/MilkBucketItemAccessor.java deleted file mode 100644 index 692c238e..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/MilkBucketItemAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.MilkBucketItem; -import org.jetbrains.annotations.Contract; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(MilkBucketItem.class) -public interface MilkBucketItemAccessor { - @Accessor("MAX_USE_TIME") - @Contract - static int getMaxUseTime() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/OminousBottleItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/OminousBottleItemAccessor.java deleted file mode 100644 index a3cf5aa9..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/OminousBottleItemAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.OminousBottleItem; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(OminousBottleItem.class) -public interface OminousBottleItemAccessor { - @Accessor("MAX_USE_TIME") - static int useDuration() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/PotionItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/PotionItemAccessor.java deleted file mode 100644 index 5a511be7..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/PotionItemAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.PotionItem; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(PotionItem.class) -public interface PotionItemAccessor { - @Accessor("MAX_USE_TIME") - static int getMaxUseTime() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/SmithingTemplateItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/SmithingTemplateItemAccessor.java index 2faedd66..c1e8d0d7 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/SmithingTemplateItemAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/SmithingTemplateItemAccessor.java @@ -22,6 +22,11 @@ static Formatting getDescriptionFormatting() { throw new AssertionError(); } + @Accessor("SMITHING_TEMPLATE_TEXT") + static Text getSmithingTemplateText() { + throw new AssertionError(); + } + @Accessor("APPLIES_TO_TEXT") static Text getAppliesToText() { throw new AssertionError(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java index 41da2a34..c587626e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java @@ -5,10 +5,8 @@ import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.BannerPatternHolderItemComponent; -import net.errorcraft.itematic.item.component.components.RecipeRemainderItemComponent; import net.minecraft.item.BannerItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.recipe.BannerDuplicateRecipe; import net.minecraft.util.DyeColor; @@ -52,18 +50,4 @@ private Item castToBannerItemUseNull(Item instance) { private DyeColor getColorUseItemComponent(BannerItem instance, @Share("dyeColor") LocalRef dyeColor) { return dyeColor.get(); } - - @Redirect( - method = "getRemainder(Lnet/minecraft/recipe/input/CraftingRecipeInput;)Lnet/minecraft/util/collection/DefaultedList;", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForRemainderUseItemComponent(ItemConvertible item, @Local ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java index b13b5393..98076f01 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java @@ -3,9 +3,7 @@ import com.llamalad7.mixinextras.sugar.Local; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.RecipeRemainderItemComponent; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.item.WrittenBookItem; import net.minecraft.recipe.BookCloningRecipe; @@ -52,20 +50,6 @@ private boolean isOfForWritableBookUseRegistryKeyCheck(ItemStack instance, Item return instance.itematic$isOf(ItemKeys.WRITABLE_BOOK); } - @Redirect( - method = "getRemainder(Lnet/minecraft/recipe/input/CraftingRecipeInput;)Lnet/minecraft/util/collection/DefaultedList;", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForRemainderUseItemComponent(ItemConvertible item, @Local ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } - @ModifyConstant( method = "getRemainder(Lnet/minecraft/recipe/input/CraftingRecipeInput;)Lnet/minecraft/util/collection/DefaultedList;", constant = @Constant( @@ -73,6 +57,6 @@ private ItemStack newItemStackForRemainderUseItemComponent(ItemConvertible item, ) ) private boolean instanceOfWrittenBookItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack inputStack) { - return inputStack.itematic$hasComponent(ItemComponentTypes.RECIPE_REMAINDER); + return inputStack.itematic$hasComponent(ItemComponentTypes.TEXT_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java index 8d0ee829..5ec2fdea 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java @@ -7,6 +7,7 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.DyeItemComponent; import net.errorcraft.itematic.item.component.components.FireworkShapeModifierItemComponent; +import net.minecraft.component.type.FireworkExplosionComponent; import net.minecraft.item.DyeItem; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; @@ -29,28 +30,13 @@ public class FireworkStarRecipeExtender { method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", at = @At( value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;test(Lnet/minecraft/item/ItemStack;)Z", - ordinal = 0 + target = "Ljava/util/Map;containsKey(Ljava/lang/Object;)Z" ) ) - private boolean testUseItemComponentCheck(Ingredient instance, ItemStack itemStack) { + private boolean containsKeyUseItemComponentCheck(Map instance, Object o, @Local ItemStack itemStack) { return itemStack.itematic$hasComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER); } - @Redirect( - method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;test(Lnet/minecraft/item/ItemStack;)Z", - ordinal = 0 - ) - ) - private boolean testUseItemComponentCheck(Ingredient instance, ItemStack itemStack, @Share("fireworkTypeModifierItemComponent") LocalRef fireworkTypeModifierItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER); - optionalComponent.ifPresent(fireworkTypeModifierItemComponent::set); - return optionalComponent.isPresent(); - } - @Redirect( method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At( @@ -59,8 +45,10 @@ private boolean testUseItemComponentCheck(Ingredient instance, ItemStack itemSta ) ) @SuppressWarnings("unchecked") - private V getModifierUseItemComponent(Map instance, Object o, @Share("fireworkTypeModifierItemComponent") LocalRef fireworkTypeModifierItemComponent) { - return (V) fireworkTypeModifierItemComponent.get().shape(); + private V getUseItemComponent(Map instance, Object o, @Local ItemStack itemStack, @Share("fireworkTypeModifierItemComponent") LocalRef fireworkTypeModifierItemComponent) { + return (V) itemStack.itematic$getComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER) + .map(FireworkShapeModifierItemComponent::shape) + .orElse(null); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/IngredientExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/IngredientExtender.java index 871ba4a8..18233d74 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/IngredientExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/IngredientExtender.java @@ -1,136 +1,63 @@ package net.errorcraft.itematic.mixin.recipe; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.access.recipe.IngredientAccess; -import net.errorcraft.itematic.access.recipe.IngredientEntryAccess; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.Ingredient; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.TagKey; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; +import java.util.Optional; import java.util.function.Function; -import java.util.stream.Stream; @Mixin(Ingredient.class) public class IngredientExtender implements IngredientAccess { - @Shadow - @Final - private Ingredient.Entry[] entries; + @Unique + private Optional remainder = Optional.empty(); - @Shadow - @Nullable - private ItemStack[] matchingStacks; - - @Redirect( + @ModifyExpressionValue( method = "", at = @At( value = "INVOKE", - target = "Lnet/minecraft/network/codec/PacketCodec;xmap(Ljava/util/function/Function;Ljava/util/function/Function;)Lnet/minecraft/network/codec/PacketCodec;" - ) - ) - private static PacketCodec xmapUseDynamicRegistry(PacketCodec> instance, Function, ? extends Ingredient> _to, Function> from) { - return PacketCodec.ofStatic( - (buf, ingredient) -> instance.encode(buf, List.of(ingredient.itematic$getMatchingStacks(buf.getRegistryManager()))), - buf -> _to.apply(instance.decode(buf)) - ); - } - - @Redirect( - method = "ofItems", - at = @At( - value = "INVOKE", - target = "Ljava/util/Arrays;stream([Ljava/lang/Object;)Ljava/util/stream/Stream;" + target = "Lcom/mojang/serialization/Codec;xmap(Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;", + remap = false ) ) - private static Stream streamItemsReturnEmptyStream(T[] array) { - return Stream.empty(); - } - - @Inject( - method = "test(Lnet/minecraft/item/ItemStack;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Ingredient;getMatchingStacks()[Lnet/minecraft/item/ItemStack;" - ), - cancellable = true - ) - private void testUseDirectEntries(ItemStack itemStack, CallbackInfoReturnable info) { - for (Ingredient.Entry entry : this.entries) { - if (entry.itematic$test(itemStack)) { - info.setReturnValue(true); - return; - } - } - info.setReturnValue(false); + private static Codec addRemainder(Codec original) { + Codec fullCodec = RecordCodecBuilder.create(instance -> instance.group( + original.fieldOf("items").forGetter(Function.identity()), + ItemStack.CODEC.optionalFieldOf("remainder").forGetter(Ingredient::itematic$remainder) + ).apply(instance, IngredientExtender::setFields)); + return Codec.either(original, fullCodec) + .xmap( + either -> either.map(Function.identity(), Function.identity()), + ingredient -> { + if (ingredient.itematic$remainder().isEmpty()) { + return Either.left(ingredient); + } + + return Either.right(ingredient); + } + ); } @Override - public ItemStack[] itematic$getMatchingStacks(RegistryWrapper.WrapperLookup lookup) { - if (this.matchingStacks == null) { - this.matchingStacks = Arrays.stream(this.entries) - .flatMap(entry -> entry.itematic$getStacks(lookup).stream()) - .distinct() - .toArray(ItemStack[]::new); - } - return this.matchingStacks; + public Optional itematic$remainder() { + return this.remainder; } - @Mixin(Ingredient.Entry.class) - public interface EntryExtender extends IngredientEntryAccess {} - - @Mixin(targets = "net/minecraft/recipe/Ingredient$TagEntry") - public static class TagEntryExtender implements IngredientEntryAccess { - @Shadow - @Final - private TagKey tag; - - @Override - public boolean itematic$test(ItemStack stack) { - return stack.isIn(this.tag); - } - - @Override - public Collection itematic$getStacks(RegistryWrapper.WrapperLookup lookup) { - ArrayList stacks = new ArrayList<>(); - lookup.getWrapperOrThrow(RegistryKeys.ITEM) - .getOptional(this.tag) - .ifPresent(entries -> entries.forEach(entry -> stacks.add(new ItemStack(entry)))); - return stacks; - } + @Override + public void itematic$setRemainder(Optional remainder) { + this.remainder = remainder; } - @Mixin(targets = "net/minecraft/recipe/Ingredient$StackEntry") - public static abstract class StackEntryExtender implements IngredientEntryAccess { - @Shadow - @Final - private ItemStack stack; - - @Shadow - public abstract Collection getStacks(); - - @Override - public boolean itematic$test(ItemStack stack) { - return stack.itemMatches(this.stack.getRegistryEntry()); - } - - @Override - public Collection itematic$getStacks(RegistryWrapper.WrapperLookup lookup) { - return this.getStacks(); - } + @Unique + private static Ingredient setFields(Ingredient ingredient, Optional remainder) { + ingredient.itematic$setRemainder(remainder); + return ingredient; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/InputSlotFillerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/InputSlotFillerExtender.java deleted file mode 100644 index 54e351fc..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/InputSlotFillerExtender.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.errorcraft.itematic.mixin.recipe; - -import net.errorcraft.itematic.item.ItemAccess; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.InputSlotFiller; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.input.RecipeInput; -import net.minecraft.server.network.ServerPlayerEntity; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(InputSlotFiller.class) -public class InputSlotFillerExtender { - @Unique - private ItemAccess itemAccess; - - @Inject( - method = "fillInputSlots(Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/recipe/RecipeEntry;Z)V", - at = @At("HEAD") - ) - private void setItemAccess(ServerPlayerEntity entity, @Nullable RecipeEntry> recipe, boolean craftAll, CallbackInfo info) { - if (this.itemAccess == null) { - this.itemAccess = entity.getWorld().itematic$getItemAccess(); - } - } - - @Redirect( - method = { - "fillInputSlots(Lnet/minecraft/recipe/RecipeEntry;Z)V", - "acceptAlignedInput(Ljava/lang/Integer;IIII)V" - }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/RecipeMatcher;getStackFromId(I)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack getStackFromIdUseItemAccess(int itemId) { - if (itemId == 0) { - return ItemStack.EMPTY; - } - - return this.itemAccess.getOptionalEntry(itemId) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java new file mode 100644 index 00000000..557e2305 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java @@ -0,0 +1,55 @@ +package net.errorcraft.itematic.mixin.recipe; + +import net.errorcraft.itematic.access.recipe.IngredientAccess; +import net.errorcraft.itematic.access.recipe.RawShapedRecipeAccess; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.RawShapedRecipe; +import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.util.collection.DefaultedList; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.List; +import java.util.Optional; + +@Mixin(RawShapedRecipe.class) +public abstract class RawShapedRecipeExtender implements RawShapedRecipeAccess { + @Shadow + @Final + private int width; + + @Shadow + @Final + private int height; + + @Shadow + @Final + private List> ingredients; + + @Shadow + @Final + private boolean symmetrical; + + @Shadow + protected abstract boolean matches(CraftingRecipeInput input, boolean mirrored); + + @Override + public DefaultedList itematic$remainder(CraftingRecipeInput input) { + boolean actuallyMirrored = !this.symmetrical && this.matches(input, true); + DefaultedList remainders = DefaultedList.ofSize(input.size(), ItemStack.EMPTY); + for(int y = 0; y < this.height; y++) { + for(int x = 0; x < this.width; x++) { + int index = actuallyMirrored ? + this.width - x - 1 + y * this.width : + x + y * this.width; + this.ingredients.get(index) + .flatMap(IngredientAccess::itematic$remainder) + .ifPresent(remainder -> remainders.set(index, remainder.copy())); + } + } + + return remainders; + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java index ecc45404..262eca52 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java @@ -1,30 +1,9 @@ package net.errorcraft.itematic.mixin.recipe; -import com.llamalad7.mixinextras.sugar.Local; import net.errorcraft.itematic.access.recipe.RecipeAccess; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.RecipeRemainderItemComponent; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(Recipe.class) public interface RecipeExtender extends RecipeAccess { - @Redirect( - method = "getRemainder", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForRemainderUseItemComponent(ItemConvertible itemConvertible, @Local Item item) { - return item.itematic$getComponent(ItemComponentTypes.RECIPE_REMAINDER) - .map(RecipeRemainderItemComponent::item) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeMatcherExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeMatcherExtender.java deleted file mode 100644 index f3fc23d3..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeMatcherExtender.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.errorcraft.itematic.mixin.recipe; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeMatcher; -import net.minecraft.registry.entry.RegistryEntry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -@Mixin(RecipeMatcher.class) -public class RecipeMatcherExtender { - /** - * @author ErrorCraft - * @reason Uses a registry entry for data-driven items. - */ - @Overwrite - public static int getItemId(ItemStack stack) { - RegistryEntry entry = stack.getRegistryEntry(); - if (entry == null) { - return -1; - } - return entry.itematic$rawId(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java new file mode 100644 index 00000000..ee1749a2 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java @@ -0,0 +1,24 @@ +package net.errorcraft.itematic.mixin.recipe; + +import net.errorcraft.itematic.access.recipe.RawShapedRecipeAccess; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.CraftingRecipe; +import net.minecraft.recipe.RawShapedRecipe; +import net.minecraft.recipe.ShapedRecipe; +import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.util.collection.DefaultedList; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(ShapedRecipe.class) +public abstract class ShapedRecipeExtender implements CraftingRecipe { + @Shadow + @Final + RawShapedRecipe raw; + + @Override + public DefaultedList getRemainder(CraftingRecipeInput input) { + return ((RawShapedRecipeAccess)(Object) this.raw).itematic$remainder(input); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java new file mode 100644 index 00000000..161034ca --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java @@ -0,0 +1,49 @@ +package net.errorcraft.itematic.mixin.recipe; + +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.CraftingRecipe; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.ShapelessRecipe; +import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.util.collection.DefaultedList; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.List; + +@Mixin(ShapelessRecipe.class) +public abstract class ShapelessRecipeExtender implements CraftingRecipe { + @Shadow + @Final + List ingredients; + + @Override + public DefaultedList getRemainder(CraftingRecipeInput input) { + IntSet foundInputs = new IntOpenHashSet(); + DefaultedList remainders = DefaultedList.ofSize(input.size(), ItemStack.EMPTY); + for (Ingredient ingredient : this.ingredients) { + if (ingredient.itematic$remainder().isEmpty()) { + continue; + } + + for (int i = 0; i < input.size(); i++) { + if (foundInputs.contains(i)) { + continue; + } + + if (!ingredient.test(input.getStackInSlot(i))) { + continue; + } + + remainders.set(i, ingredient.itematic$remainder().get().copy()); + foundInputs.add(i); + break; + } + } + + return remainders; + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SuspiciousStewRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SuspiciousStewRecipeExtender.java deleted file mode 100644 index b2c2fb9c..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SuspiciousStewRecipeExtender.java +++ /dev/null @@ -1,115 +0,0 @@ -package net.errorcraft.itematic.mixin.recipe; - -import com.llamalad7.mixinextras.sugar.Local; -import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.block.SuspiciousStewIngredient; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.SuspiciousStewRecipe; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.TagKey; -import org.objectweb.asm.Opcodes; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; - -@Mixin(SuspiciousStewRecipe.class) -public class SuspiciousStewRecipeExtender { - @Redirect( - method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/block/Blocks;BROWN_MUSHROOM:Lnet/minecraft/block/Block;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForBrownMushroomUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BROWN_MUSHROOM); - } - - @Redirect( - method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/block/Blocks;RED_MUSHROOM:Lnet/minecraft/block/Block;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForRedMushroomUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.RED_MUSHROOM); - } - - @Redirect( - method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" - ) - ) - private boolean isInForSmallFlowersUseItemComponentCheck(ItemStack instance, TagKey tag) { - return instance.itematic$hasComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT); - } - - @Redirect( - method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;BOWL:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForBowlUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BOWL); - } - - @Redirect( - method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/block/SuspiciousStewIngredient;of(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/block/SuspiciousStewIngredient;" - ) - ) - private SuspiciousStewIngredient suspiciousStewEffectsUseItemComponent(ItemConvertible item, @Local(ordinal = 1) ItemStack inputStack) { - return inputStack.itematic$getComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT) - .orElse(null); - } - - @Redirect( - method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForSuspiciousStewUseRegistryEntry(ItemConvertible item, int count, @Local(argsOnly = true) RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) - .getOptional(ItemKeys.SUSPICIOUS_STEW) - .map(entry -> new ItemStack(entry, count)) - .orElse(ItemStack.EMPTY); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/util/ActionResultExtender.java b/src/main/java/net/errorcraft/itematic/mixin/util/ActionResultExtender.java deleted file mode 100644 index 2281a4ce..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/util/ActionResultExtender.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.errorcraft.itematic.mixin.util; - -import net.errorcraft.itematic.access.util.ActionResultAccess; -import net.minecraft.util.ActionResult; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - -import java.util.function.Function; - -@SuppressWarnings({"DataFlowIssue", "UnreachableCode"}) -@Mixin(ActionResult.class) -public class ActionResultExtender implements ActionResultAccess { - @Shadow - @Final - public static ActionResult SUCCESS; - - @Shadow - @Final - public static ActionResult SUCCESS_NO_ITEM_USED; - - @Shadow - @Final - public static ActionResult CONSUME; - - @Shadow - @Final - public static ActionResult CONSUME_PARTIAL; - - @Shadow - @Final - public static ActionResult PASS; - - @Shadow - @Final - public static ActionResult FAIL; - - @Unique - private Function merger; - - static { - ((ActionResultExtender)(Object) SUCCESS).merger = other -> SUCCESS; - ((ActionResultExtender)(Object) SUCCESS_NO_ITEM_USED).merger = other -> other.shouldIncrementStat() ? SUCCESS : SUCCESS_NO_ITEM_USED; - ((ActionResultExtender)(Object) CONSUME).merger = other -> other.shouldSwingHand() ? SUCCESS : CONSUME; - ((ActionResultExtender)(Object) CONSUME_PARTIAL).merger = other -> other.isAccepted() ? other : CONSUME_PARTIAL; - ((ActionResultExtender)(Object) PASS).merger = other -> other; - ((ActionResultExtender)(Object) FAIL).merger = other -> FAIL; - } - - @Override - public ActionResult itematic$merge(ActionResult other) { - if (other == FAIL) { - return FAIL; - } - return this.merger.apply(other); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/util/UseActionExtender.java b/src/main/java/net/errorcraft/itematic/mixin/util/UseActionExtender.java deleted file mode 100644 index 96da5c6d..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/util/UseActionExtender.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.errorcraft.itematic.mixin.util; - -import net.minecraft.util.StringIdentifiable; -import net.minecraft.util.UseAction; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Locale; - -@Mixin(UseAction.class) -public class UseActionExtender implements StringIdentifiable { - @Unique - private String name; - - @Inject( - method = "", - at = @At("TAIL") - ) - private void initSetNameField(String string, int i, CallbackInfo info) { - this.name = string.toLowerCase(Locale.ROOT); - } - - @Override - public String asString() { - return this.name; - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java b/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java index ec6effdb..ac2908d5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java @@ -2,10 +2,9 @@ import com.llamalad7.mixinextras.sugar.Local; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; +import net.minecraft.entity.raid.RaiderEntity; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.village.raid.Raid; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -13,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Raid.class) @@ -21,7 +21,7 @@ public abstract class RaidExtender { public abstract World getWorld(); @Redirect( - method = "getOminousBanner", + method = "createOminousBanner", at = @At( value = "NEW", target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" @@ -32,7 +32,7 @@ private static ItemStack newItemStackForBannerUseRegistryEntry(ItemConvertible i } @Inject( - method = "getOminousBanner", + method = "createOminousBanner", at = @At( value = "NEW", target = "()Lnet/minecraft/component/type/BannerPatternsComponent$Builder;" @@ -45,14 +45,14 @@ private static void checkEmptyStack(CallbackInfoReturnable info, @Loc } } - @Redirect( + @Inject( method = "setWaveCaptain", at = @At( value = "INVOKE", - target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" + target = "Lnet/minecraft/village/raid/Raid;createOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.getWorld(), bannerPatternLookup); + private void createOminousBannerSetDataDrivenItemStack(int wave, RaiderEntity entity, CallbackInfo info) { + RaidUtil.createOminousBanner(this.getWorld()); } } diff --git a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java b/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java index ea15cb10..460fdd11 100644 --- a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java +++ b/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java @@ -10,6 +10,7 @@ import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.CraftingRecipe; import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.IngredientPlacement; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.book.CraftingRecipeCategory; import net.minecraft.recipe.input.CraftingRecipeInput; @@ -17,7 +18,6 @@ import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.util.DyeColor; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; public record ItemColoringRecipe(CraftingRecipeCategory category, Ingredient ingredient, DyeColor color, ItemStack result) implements CraftingRecipe { @@ -30,7 +30,7 @@ public CraftingRecipeCategory getCategory() { public boolean matches(CraftingRecipeInput input, World world) { boolean foundIngredient = false; boolean foundColor = false; - for (int i = 0; i < input.getSize(); i++) { + for (int i = 0; i < input.size(); i++) { ItemStack stack = input.getStackInSlot(i); if (stack.isEmpty()) { continue; @@ -62,7 +62,7 @@ public boolean matches(CraftingRecipeInput input, World world) { @Override public ItemStack craft(CraftingRecipeInput input, RegistryWrapper.WrapperLookup lookup) { - for (int i = 0; i < input.getSize(); i++) { + for (int i = 0; i < input.size(); i++) { ItemStack stack = input.getStackInSlot(i); if (!this.ingredient.test(stack)) { continue; @@ -85,15 +85,13 @@ public ItemStack getResult(RegistryWrapper.WrapperLookup wrapperLookup) { } @Override - public DefaultedList getIngredients() { - DefaultedList defaultedList = DefaultedList.of(); - defaultedList.add(this.ingredient); - return defaultedList; + public RecipeSerializer getSerializer() { + return ItematicRecipeSerializers.ITEM_COLORING; } @Override - public RecipeSerializer getSerializer() { - return ItematicRecipeSerializers.ITEM_COLORING; + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; } private boolean isExpectedColor(ItemStack stack) { @@ -106,7 +104,7 @@ private boolean isExpectedColor(ItemStack stack) { public static class Serializer implements RecipeSerializer { private static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( CraftingRecipeCategory.CODEC.fieldOf("category").orElse(CraftingRecipeCategory.MISC).forGetter(ItemColoringRecipe::category), - Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter(ItemColoringRecipe::ingredient), + Ingredient.CODEC.fieldOf("ingredient").forGetter(ItemColoringRecipe::ingredient), DyeColor.CODEC.fieldOf("color").forGetter(ItemColoringRecipe::color), RegistryFixedCodec.of(RegistryKeys.ITEM).fieldOf("result").xmap(ItemStack::new, ItemStack::getRegistryEntry).forGetter(ItemColoringRecipe::result) ).apply(instance, ItemColoringRecipe::new)); diff --git a/src/main/java/net/errorcraft/itematic/util/UseActionUtil.java b/src/main/java/net/errorcraft/itematic/util/UseActionUtil.java deleted file mode 100644 index 510d4213..00000000 --- a/src/main/java/net/errorcraft/itematic/util/UseActionUtil.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.errorcraft.itematic.util; - -import com.mojang.serialization.Codec; -import io.netty.buffer.ByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.util.StringIdentifiable; -import net.minecraft.util.UseAction; -import net.minecraft.util.function.ValueLists; - -import java.util.function.IntFunction; - -public class UseActionUtil { - public static final Codec CODEC = StringIdentifiable.createCodec(UseAction::values); - private static final IntFunction INT_TO_ACTION = ValueLists.createIdToValueFunction(UseAction::ordinal, UseAction.values(), ValueLists.OutOfBoundsHandling.ZERO); - public static final PacketCodec PACKET_CODEC = PacketCodecs.indexed(INT_TO_ACTION, UseAction::ordinal); - - private UseActionUtil() {} -} diff --git a/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java b/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java index 809fe7e6..bd5e648c 100644 --- a/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java +++ b/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java @@ -17,23 +17,18 @@ public static ItemStack ominousBanner() { if (ominousBanner == null) { return ItemStack.EMPTY; } - return ominousBanner; - } - public static ItemStack createOminousBanner(WorldAccess world, RegistryEntryLookup bannerPatterns) { - ItemStack stack = world.itematic$createStack(ItemKeys.WHITE_BANNER); - return createOminousBanner(stack, bannerPatterns); + ItemStack resultingOminousBanner = ominousBanner; + ominousBanner = null; + return resultingOminousBanner; } - public static ItemStack createOminousBanner(RegistryEntryLookup items, RegistryEntryLookup bannerPatterns) { - ItemStack stack = new ItemStack(items.getOrThrow(ItemKeys.WHITE_BANNER)); - return createOminousBanner(stack, bannerPatterns); + public static void createOminousBanner(WorldAccess world) { + ominousBanner = world.itematic$createStack(ItemKeys.WHITE_BANNER); } - private static ItemStack createOminousBanner(ItemStack stack, RegistryEntryLookup bannerPatterns) { - ominousBanner = stack; - Raid.getOminousBanner(bannerPatterns); - ominousBanner = null; - return stack; + public static ItemStack getOminousBanner(RegistryEntryLookup items, RegistryEntryLookup bannerPatterns) { + ominousBanner = new ItemStack(items.getOrThrow(ItemKeys.WHITE_BANNER)); + return Raid.createOminousBanner(bannerPatterns); } } diff --git a/src/main/java/net/errorcraft/itematic/world/action/ActionTypeKeys.java b/src/main/java/net/errorcraft/itematic/world/action/ActionTypeKeys.java index e2a3a08a..ebca8365 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/ActionTypeKeys.java +++ b/src/main/java/net/errorcraft/itematic/world/action/ActionTypeKeys.java @@ -49,6 +49,7 @@ public class ActionTypeKeys { public static final RegistryKey> USE_BUCKET = of("use_bucket"); public static final RegistryKey> REMOVE_STATUS_EFFECTS = of("remove_status_effects"); public static final RegistryKey> INCREMENT_STAT = of("increment_stat"); + public static final RegistryKey> ADD_STATUS_EFFECTS = of("add_status_effects"); private ActionTypeKeys() {} diff --git a/src/main/java/net/errorcraft/itematic/world/action/ActionTypes.java b/src/main/java/net/errorcraft/itematic/world/action/ActionTypes.java index d7f5bf64..8dfc4db3 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/ActionTypes.java +++ b/src/main/java/net/errorcraft/itematic/world/action/ActionTypes.java @@ -50,6 +50,7 @@ public class ActionTypes { public static final ActionType USE_BUCKET = register(ActionTypeKeys.USE_BUCKET, new ActionType<>(UseBucketAction.CODEC)); public static final ActionType REMOVE_STATUS_EFFECTS = register(ActionTypeKeys.REMOVE_STATUS_EFFECTS, new ActionType<>(RemoveStatusEffectsAction.CODEC)); public static final ActionType INCREMENT_STAT = register(ActionTypeKeys.INCREMENT_STAT, new ActionType<>(IncrementStatAction.CODEC)); + public static final ActionType ADD_STATUS_EFFECTS = register(ActionTypeKeys.ADD_STATUS_EFFECTS, new ActionType<>(AddStatusEffectsAction.CODEC)); private ActionTypes() {} diff --git a/src/main/java/net/errorcraft/itematic/world/action/Actions.java b/src/main/java/net/errorcraft/itematic/world/action/Actions.java index 0632cd52..90680401 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/Actions.java +++ b/src/main/java/net/errorcraft/itematic/world/action/Actions.java @@ -66,15 +66,15 @@ public static void bootstrap(Registerable registerable) { .add(PlaySoundAction.of(ActionContextParameter.TARGET, soundEvents.getOrThrow(SoundEventKeys.HOE_TILL), SoundCategory.BLOCKS)) )); registerable.register(TILL_DIRT, ActionEntry.of( - setBlockRequirements(builder -> builder.tag(ItematicBlockTags.TILLABLE_INTO_FARMLAND), true), + setBlockRequirements(blocks, builder -> builder.tag(blocks, ItematicBlockTags.TILLABLE_INTO_FARMLAND), true), SetBlockStateAction.of(ActionContextParameter.TARGET, blocks.getOrThrow(BlockKeys.FARMLAND)) )); registerable.register(TILL_COARSE_DIRT, ActionEntry.of( - setBlockRequirements(builder -> builder.blocks(blocks.getOrThrow(BlockKeys.COARSE_DIRT).value()), true), + setBlockRequirements(blocks, builder -> builder.blocks(blocks, blocks.getOrThrow(BlockKeys.COARSE_DIRT).value()), true), SetBlockStateAction.of(ActionContextParameter.TARGET, blocks.getOrThrow(BlockKeys.DIRT)) )); registerable.register(TILL_ROOTED_DIRT, ActionEntry.of( - setBlockRequirements(builder -> builder.blocks(blocks.getOrThrow(BlockKeys.ROOTED_DIRT).value()), false), + setBlockRequirements(blocks, builder -> builder.blocks(blocks, blocks.getOrThrow(BlockKeys.ROOTED_DIRT).value()), false), PassingSequenceHandler.builder() .add(SetBlockStateAction.of(ActionContextParameter.TARGET, blocks.getOrThrow(BlockKeys.DIRT))) .add(DropItemFromBlockAction.of(ActionContextParameter.TARGET, items.getOrThrow(ItemKeys.HANGING_ROOTS))) @@ -92,7 +92,7 @@ public static void bootstrap(Registerable registerable) { .add(SwingHandAction.INSTANCE) )); registerable.register(FLATTEN_GROUND, ActionEntry.of( - setBlockRequirements(builder -> builder.tag(ItematicBlockTags.FLATTENABLE_INTO_DIRT_PATH), true), + setBlockRequirements(blocks, builder -> builder.tag(blocks, ItematicBlockTags.FLATTENABLE_INTO_DIRT_PATH), true), PassingSequenceHandler.builder() .add(SetBlockStateAction.of(ActionContextParameter.TARGET, blocks.getOrThrow(BlockKeys.DIRT_PATH))) .add(PlaySoundAction.of(ActionContextParameter.TARGET, soundEvents.getOrThrow(SoundEventKeys.SHOVEL_FLATTEN), SoundCategory.BLOCKS)) @@ -103,7 +103,7 @@ public static void bootstrap(Registerable registerable) { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .tag(BlockTags.CAMPFIRES) + .tag(blocks, BlockTags.CAMPFIRES) .state(StatePredicate.Builder.create() .exactMatch(Properties.LIT, true)))) .build() @@ -162,7 +162,7 @@ public static void bootstrap(Registerable registerable) { LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .blocks(blocks.getOrThrow(BlockKeys.TNT).value()))) + .blocks(blocks, blocks.getOrThrow(BlockKeys.TNT).value()))) .build() ), PrimeTntAction.of(ActionContextParameter.TARGET) @@ -172,12 +172,12 @@ public static void bootstrap(Registerable registerable) { )); } - public static ActionEntry waxSign(boolean wax) { - return modifySign(ModifySignAction.wax(ActionContextParameter.TARGET, wax)); + public static ActionEntry waxSign(RegistryEntryLookup blocks, boolean wax) { + return modifySign(blocks, ModifySignAction.wax(ActionContextParameter.TARGET, wax)); } - public static ActionEntry glowSign(boolean glow) { - return modifySign(ModifySignAction.glow(ActionContextParameter.TARGET, glow)); + public static ActionEntry glowSign(RegistryEntryLookup blocks, boolean glow) { + return modifySign(blocks, ModifySignAction.glow(ActionContextParameter.TARGET, glow)); } public static ActionEntry potBlock(RegistryEntryLookup blocks, RegistryKey pottedBlock) { @@ -187,7 +187,7 @@ public static ActionEntry potBlock(RegistryEntryLookup blocks, RegistryKe LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .blocks(blocks.getOrThrow(BlockKeys.FLOWER_POT).value()))) + .blocks(blocks, blocks.getOrThrow(BlockKeys.FLOWER_POT).value()))) .build() ), PassingSequenceHandler.builder() @@ -199,14 +199,14 @@ public static ActionEntry potBlock(RegistryEntryLookup blocks, RegistryKe ); } - private static ActionEntry modifySign(ModifySignAction action) { + private static ActionEntry modifySign(RegistryEntryLookup blocks, ModifySignAction action) { return ActionEntry.of( ActionRequirements.of( ActionContextParameters.of(ActionContextParameter.THIS, ActionContextParameter.TARGET), LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .tag(BlockTags.SIGNS))) + .tag(blocks, BlockTags.SIGNS))) .build() ), PassingSequenceHandler.builder() @@ -216,14 +216,14 @@ private static ActionEntry modifySign(ModifySignAction action) { ); } - private static ActionRequirements setBlockRequirements(UnaryOperator blockPredicateBuilder, boolean checkEmptySpace) { + private static ActionRequirements setBlockRequirements(RegistryEntryLookup blocks, UnaryOperator blockPredicateBuilder, boolean checkEmptySpace) { return ActionRequirements.of( ActionContextParameters.of(ActionContextParameter.THIS, ActionContextParameter.TARGET), - setBlockConditions(blockPredicateBuilder.apply(BlockPredicate.Builder.create()), checkEmptySpace).build() + setBlockConditions(blocks, blockPredicateBuilder.apply(BlockPredicate.Builder.create()), checkEmptySpace).build() ); } - private static LootCondition.Builder setBlockConditions(BlockPredicate.Builder blockPredicate, boolean checkEmptySpace) { + private static LootCondition.Builder setBlockConditions(RegistryEntryLookup blocks, BlockPredicate.Builder blockPredicate, boolean checkEmptySpace) { LootCondition.Builder locationCheckPredicate = LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(blockPredicate)); @@ -238,7 +238,7 @@ private static LootCondition.Builder setBlockConditions(BlockPredicate.Builder b LocationCheckLootCondition.builder( LocationPredicate.Builder.create() .block(BlockPredicate.Builder.create() - .tag(BlockTags.AIR)), + .tag(blocks, BlockTags.AIR)), new BlockPos(0, 1, 0))); } diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/AddStatusEffectsAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/AddStatusEffectsAction.java new file mode 100644 index 00000000..13cc6e10 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/AddStatusEffectsAction.java @@ -0,0 +1,45 @@ +package net.errorcraft.itematic.world.action.actions; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.world.action.Action; +import net.errorcraft.itematic.world.action.ActionType; +import net.errorcraft.itematic.world.action.ActionTypes; +import net.errorcraft.itematic.world.action.context.ActionContext; +import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; + +import java.util.List; + +public record AddStatusEffectsAction(List effects, ActionContextParameter entity) implements Action { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + StatusEffectInstance.CODEC.listOf().fieldOf("effects").forGetter(AddStatusEffectsAction::effects), + ActionContextParameter.CODEC.fieldOf("entity").forGetter(AddStatusEffectsAction::entity) + ).apply(instance, AddStatusEffectsAction::new)); + + public static AddStatusEffectsAction of(StatusEffectInstance... effects) { + return new AddStatusEffectsAction(List.of(effects), ActionContextParameter.THIS); + } + + @Override + public ActionType type() { + return ActionTypes.ADD_STATUS_EFFECTS; + } + + @Override + public boolean execute(ActionContext context) { + return context.livingEntity(this.entity) + .map(this::addStatusEffects) + .orElse(false); + } + + private boolean addStatusEffects(LivingEntity target) { + boolean addedStatusEffects = false; + for (StatusEffectInstance effect : this.effects) { + addedStatusEffects |= target.addStatusEffect(effect); + } + + return addedStatusEffects; + } +} diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/DisplayParticleAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/DisplayParticleAction.java index 49be1b20..c305720e 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/DisplayParticleAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/DisplayParticleAction.java @@ -21,7 +21,7 @@ public record DisplayParticleAction(ActionContextParameter position, ParticleEff public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( ActionContextParameter.CODEC.fieldOf("position").forGetter(DisplayParticleAction::position), ParticleTypes.TYPE_CODEC.fieldOf("particle").forGetter(DisplayParticleAction::particle), - Codecs.NONNEGATIVE_INT.fieldOf("count").forGetter(DisplayParticleAction::count), + Codecs.NON_NEGATIVE_INT.fieldOf("count").forGetter(DisplayParticleAction::count), Vec3dProvider.CODEC.optionalFieldOf("offset", Vec3dProvider.ZERO).forGetter(DisplayParticleAction::offset), Vec3dProvider.CODEC.fieldOf("delta").forGetter(DisplayParticleAction::delta), ItematicCodecs.NON_NEGATIVE_DOUBLE.fieldOf("speed").forGetter(DisplayParticleAction::speed), diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockAction.java index 08af55e4..15db3db9 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockAction.java @@ -37,6 +37,6 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { BlockPlacer placer = BlockPlacer.of(context, this.position, this.block, false, this.decrementCount); - return placer.place().isAccepted(); + return placer.place().succeeds(); } } diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityAction.java index f898bf54..44b9ae43 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityAction.java @@ -29,6 +29,6 @@ public ActionType type() { public boolean execute(ActionContext context) { return EntityPlacer.action(context, this.position, this.entity) .place() - .isAccepted(); + .succeeds(); } } diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java index 4fc5cf3d..efc89a31 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java @@ -30,7 +30,7 @@ public boolean execute(ActionContext context) { .itematic$getComponent(ItemComponentTypes.ENTITY) .map(itemComponent -> EntityPlacer.action(context, this.position, itemComponent) .place() - .isAccepted()) + .succeeds()) .orElse(false); } } diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java index 7c49c193..09d3dc23 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java @@ -34,7 +34,7 @@ public boolean execute(ActionContext context) { BlockPos pos = context.blockPos(this.position); BlockHitResult hitResult = new BlockHitResult(pos.toCenterPos(), context.side(), pos, true); return c.place(context.world(), context.player(ActionContextParameter.THIS).orElse(null), context.hand(), stack, context.resultStackConsumer(), hitResult) - .isAccepted(); + .succeeds(); }) .orElse(false); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 7fd35eac..66112d01 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -42,9 +42,6 @@ "net/minecraft/class_507": [ "net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess" ], - "net/minecraft/class_1269": [ - "net/errorcraft/itematic/access/util/ActionResultAccess" - ], "net/minecraft/class_1297": [ "net/errorcraft/itematic/access/entity/EntityAccess" ], @@ -72,21 +69,12 @@ "net/minecraft/class_1799": [ "net/errorcraft/itematic/access/item/ItemStackAccess" ], - "net/minecraft/class_1839": [ - "net/minecraft/util/StringIdentifiable" - ], "net/minecraft/class_1845": [ "net/errorcraft/itematic/access/recipe/BrewingRecipeRegistryAccess" ], "net/minecraft/class_1845\u0024class_9665": [ "net/errorcraft/itematic/access/recipe/BrewingRecipeRegistryBuilderAccess" ], - "net/minecraft/class_1856": [ - "net/errorcraft/itematic/access/recipe/IngredientAccess" - ], - "net/minecraft/class_1856\u0024class_1859": [ - "net/errorcraft/itematic/access/recipe/IngredientEntryAccess" - ], "net/minecraft/class_1914": [ "net/errorcraft/itematic/access/village/TradeOfferAccess" ], diff --git a/src/main/resources/itematic.classtweaker b/src/main/resources/itematic.classtweaker index 98b60cb3..e7e775d4 100644 --- a/src/main/resources/itematic.classtweaker +++ b/src/main/resources/itematic.classtweaker @@ -1,7 +1,6 @@ classTweaker v1 named accessible class net/minecraft/registry/Registries$Initializer -accessible class net/minecraft/recipe/Ingredient$Entry accessible class net/minecraft/entity/passive/OcelotEntity$OcelotTemptGoal accessible class net/minecraft/client/gui/screen/GameModeSelectionScreen$GameModeSelection accessible class net/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget @@ -10,3 +9,4 @@ accessible class net/minecraft/client/gui/screen/world/CustomizeFlatLevelS inject-interface net/minecraft/util/DyeColor net/errorcraft/itematic/access/util/DyeColorAccess inject-interface net/minecraft/item/tooltip/BundleTooltipData net/errorcraft/itematic/access/item/tooltip/BundleTooltipDataAccess +inject-interface net/minecraft/recipe/Ingredient net/errorcraft/itematic/access/recipe/IngredientAccess diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 609acb75..7863821a 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -36,7 +36,6 @@ "block.CropBlockExtender", "block.DecoratedPotBlockExtender", "block.DispenserBlockExtender", - "block.FenceBlockExtender", "block.FertilizableFlowerBlockExtender", "block.FlowerPotBlockExtender", "block.FluidBlockExtender", @@ -87,8 +86,9 @@ "component.type.BundleContentsComponentExtender", "component.type.BundleContentsComponentExtender$BuilderExtender", "component.type.ChargedProjectilesComponentExtender", + "component.type.ConsumableComponentAccessor", + "component.type.ConsumableComponentExtender", "component.type.DyedColorComponentExtender", - "component.type.FoodComponentExtender$BuilderExtender", "component.type.ToolComponentExtender", "component.type.ToolComponentExtender$RuleExtender", "enchantment.EnchantmentHelperExtender", @@ -220,6 +220,7 @@ "entity.passive.VillagerEntityExtender", "entity.passive.WanderingTraderEntityExtender", "entity.passive.WolfEntityExtender", + "entity.player.ItemCooldownManagerExtender", "entity.player.PlayerEntityExtender", "entity.player.PlayerInventoryExtender", "entity.player.ServerPlayerEntityExtender", @@ -237,7 +238,7 @@ "entity.projectile.thrown.SnowballEntityExtender", "entity.projectile.thrown.ThrownItemEntityExtender", "entity.raid.RaiderEntityExtender", - "entity.raid.RaiderEntityExtender$PickupBannerAsLeaderGoalExtender", + "entity.raid.RaiderEntityExtender$PickUpBannerAsLeaderGoalExtender", "entity.vehicle.AbstractMinecartEntityExtender", "entity.vehicle.BoatEntityExtender", "entity.vehicle.BoatEntityExtender$TypeExtender", @@ -253,6 +254,7 @@ "fluid.WaterFluidExtender", "inventory.SimpleInventoryExtender", "item.AnimalArmorItemExtender$TypeExtender", + "item.ArmorMaterialsAccessor", "item.BrushItemAccessor", "item.BrushItemExtender", "item.BundleItemAccessor", @@ -264,11 +266,12 @@ "item.ElytraItemExtender", "item.EquipmentExtender", "item.FilledMapItemAccessor", + "item.FuelRegistryExtender$BuilderExtender", "item.GoatHornItemAccessor", - "item.HoneyBottleItemAccessor", "item.ItemAccessor", "item.ItemAccessor$SettingsAccessor", "item.ItemExtender", + "item.ItemExtender$SettingsExtender", "item.ItemGroupExtender", "item.ItemGroupExtender$EntriesImplExtender", "item.ItemGroupExtender$StackVisibilityExtender", @@ -278,9 +281,6 @@ "item.ItemStackExtender", "item.ItemUsageExtender", "item.KnowledgeBookItemExtender", - "item.MilkBucketItemAccessor", - "item.OminousBottleItemAccessor", - "item.PotionItemAccessor", "item.RangedWeaponItemAccessor", "item.SmithingTemplateItemAccessor", "item.SpawnEggItemAccessor", @@ -323,15 +323,13 @@ "recipe.FireworkStarFadeRecipeExtender", "recipe.FireworkStarRecipeExtender", "recipe.IngredientExtender", - "recipe.IngredientExtender$EntryExtender", - "recipe.IngredientExtender$StackEntryExtender", - "recipe.IngredientExtender$TagEntryExtender", - "recipe.InputSlotFillerExtender", "recipe.MapCloningRecipeExtender", "recipe.MapExtendingRecipeExtender", + "recipe.RawShapedRecipeExtender", "recipe.RecipeExtender", - "recipe.RecipeMatcherExtender", "recipe.RepairItemRecipeExtender", + "recipe.ShapedRecipeExtender", + "recipe.ShapelessRecipeExtender", "recipe.ShieldDecorationRecipeExtender", "recipe.SmeltingRecipeExtender", "recipe.SmithingRecipeExtender", @@ -339,7 +337,6 @@ "recipe.SmithingTrimRecipeExtender", "recipe.SmokingRecipeExtender", "recipe.StonecuttingRecipeExtender", - "recipe.SuspiciousStewRecipeExtender", "recipe.TippedArrowRecipeExtender", "registry.BuiltinRegistriesExtender", "registry.RegistriesAccessor", @@ -378,9 +375,7 @@ "stat.StatExtender", "stat.StatTypeExtender", "structure.EndCityGeneratorExtender$PieceExtender", - "util.ActionResultExtender", "util.DyeColorExtender", - "util.UseActionExtender", "util.dynamic.CodecsAccessor", "village.TradeOfferExtender", "village.TradeOffersAccessor", From 8e894412b0bcf5a546998299e0795ea6bd39c030 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Mon, 2 Feb 2026 23:59:34 +0100 Subject: [PATCH 02/11] Port to 24w35a --- gradle.properties | 6 ++-- .../GameModeSelectionScreenExtender.java | 4 +-- .../gui/screen/StatsScreenExtender.java | 30 ++++++++++++------- .../CreativeInventoryScreenExtender.java | 10 +++++-- .../RecipeGroupButtonWidgetExtender.java | 2 +- .../world/LevelScreenProviderExtender.java | 2 +- .../recipebook/RecipeBookGroupExtender.java | 3 +- .../feature/ArmorFeatureRendererExtender.java | 13 +++----- .../client/toast/RecipeToastExtender.java | 2 +- .../itematic/data/server/RecipeProvider.java | 2 +- .../data/server/registry/ActionProvider.java | 2 +- .../registry/ArmorMaterialProvider.java | 2 +- .../registry/DispenseBehaviorProvider.java | 2 +- .../ItemGroupEntryProviderProvider.java | 2 +- .../data/server/registry/ItemProvider.java | 2 +- .../registry/SmithingTemplateProvider.java | 2 +- .../data/server/registry/TradeProvider.java | 2 +- .../data/server/tag/ActionTagProvider.java | 2 +- .../data/server/tag/BlockTagProvider.java | 2 +- .../ItemGroupEntryProviderTagProvider.java | 2 +- .../data/server/tag/ItemTagProvider.java | 2 +- .../data/server/tag/PotionTagProvider.java | 4 +-- .../data/server/tag/TradeTagProvider.java | 2 +- .../itematic/gametest/TestUtil.java | 2 +- .../itematic/gametest/item/BowTestSuite.java | 2 +- .../gametest/item/CrossbowTestSuite.java | 2 +- .../gametest/item/HoneyBottleTestSuite.java | 4 +-- .../errorcraft/itematic/item/ItemAccess.java | 10 ++----- .../errorcraft/itematic/item/ItemUtil.java | 3 +- .../components/PlayableItemComponent.java | 2 +- .../entries/EnchantmentItemGroupEntry.java | 2 +- .../entries/InstrumentItemGroupEntry.java | 2 +- .../PaintingVariantItemGroupEntry.java | 2 +- .../entry/entries/PotionItemGroupEntry.java | 2 +- ...piciousEffectIngredientItemGroupEntry.java | 2 +- .../entry/entries/TagItemGroupEntry.java | 2 +- .../function/SetRandomPotionItemModifier.java | 5 +++- .../block/DecoratedPotBlockExtender.java | 3 +- .../AbstractFurnaceBlockEntityExtender.java | 2 +- .../mixin/block/entity/SherdsExtender.java | 4 +-- ...oreboardCriterionArgumentTypeExtender.java | 2 +- .../task/GatherItemsVillagerTaskExtender.java | 13 +++++--- .../passive/VillagerEntityExtender.java | 6 ++-- .../WanderingTraderEntityExtender.java | 4 +-- .../player/ServerPlayerEntityExtender.java | 2 +- .../itematic/mixin/item/ItemExtender.java | 6 +++- .../mixin/item/ItemGroupExtender.java | 2 +- .../mixin/item/WindChargeItemAccessor.java | 13 -------- .../CraftingDecoratedPotRecipeExtender.java | 2 +- .../recipe/FireworkRocketRecipeExtender.java | 4 +-- .../recipe/FireworkStarRecipeExtender.java | 6 ++-- .../recipe/SmithingTrimRecipeExtender.java | 2 +- .../recipe/TippedArrowRecipeExtender.java | 2 +- .../ScoreboardCriterionExtender.java | 4 +-- .../mixin/stat/ServerStatHandlerExtender.java | 4 +-- .../EnchantWithLevelsTradeModifier.java | 4 +-- src/main/resources/itematic.mixins.json | 1 - 57 files changed, 116 insertions(+), 114 deletions(-) delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/WindChargeItemAccessor.java diff --git a/gradle.properties b/gradle.properties index 34a658b9..77bc6e43 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w34a - yarn_mappings=24w34a+build.12 + minecraft_version=24w35a + yarn_mappings=24w35a+build.6 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.103.0+1.21.2 + fabric_version=0.103.1+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/GameModeSelectionScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/GameModeSelectionScreenExtender.java index 83184050..41f2183b 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/GameModeSelectionScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/GameModeSelectionScreenExtender.java @@ -35,7 +35,7 @@ private void renderIconUseRegistryEntry(GameModeSelectionScreen.GameModeSelectio if (world == null) { return; } - ItemStack stack = instance.itematic$icon(world.getRegistryManager().get(RegistryKeys.ITEM)); + ItemStack stack = instance.itematic$icon(world.getRegistryManager().getOrThrow(RegistryKeys.ITEM)); context.drawItem(stack, x, y); } } @@ -84,7 +84,7 @@ private static ItemStack newItemStackReturnEmptyStack(ItemConvertible item) { if (this.icon == null) { return ItemStack.EMPTY; } - return registry.getEntry(this.icon) + return registry.getOptional(this.icon) .map(ItemStack::new) .orElse(ItemStack.EMPTY); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java index 1565d491..3942aff5 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java @@ -103,8 +103,8 @@ private void addEntries(StatsScreen statsScreen, MinecraftClient client, Callbac @Unique private Set> entries(DynamicRegistryManager registryManager) { Set> entries = new HashSet<>(); - Registry items = registryManager.get(RegistryKeys.ITEM); - Registry blocks = registryManager.get(RegistryKeys.BLOCK); + Registry items = registryManager.getOrThrow(RegistryKeys.ITEM); + Registry blocks = registryManager.getOrThrow(RegistryKeys.BLOCK); for (RegistryEntry entry : items.getIndexedEntries()) { for (StatType statType : this.itemStatTypes) { if (this.hasNoStatFor(statType, entry)) { @@ -120,7 +120,7 @@ private Set> entries(DynamicRegistryManager registryManager) continue; } RegistryKey itemKey = entry.value().itematic$asItemKey(); - items.getEntry(itemKey).ifPresent(entries::add); + items.getOptional(itemKey).ifPresent(entries::add); break; } } @@ -202,11 +202,13 @@ private Block getBlockReturnNull(BlockItem instance) { slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;", + opcode = Opcodes.GETFIELD ), to = @At( value = "FIELD:LAST", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;", + opcode = Opcodes.GETFIELD ) ) ) @@ -224,11 +226,13 @@ private int getStatForFirstBlockUseItemComponent(StatHandler instance, StatT slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;", + opcode = Opcodes.GETFIELD ), to = @At( value = "FIELD:LAST", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;", + opcode = Opcodes.GETFIELD ) ) ) @@ -246,7 +250,8 @@ private int getStatForSecondBlockUseItemComponent(StatHandler instance, Stat slice = @Slice( from = @At( value = "FIELD:LAST", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;", + opcode = Opcodes.GETFIELD ) ) ) @@ -264,7 +269,8 @@ private int getStatForFirstItemUseRegistryEntry(StatHandler instance, StatTy slice = @Slice( from = @At( value = "FIELD:LAST", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;selectedStatType:Lnet/minecraft/stat/StatType;", + opcode = Opcodes.GETFIELD ) ) ) @@ -364,7 +370,8 @@ private Block getBlockReturnNull(BlockItem instance) { slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;blockStatTypes:Ljava/util/List;", + opcode = Opcodes.GETFIELD ) ) ) @@ -382,7 +389,8 @@ private Stat getOrCreateStatForBlockUseItemComponent(StatType slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;itemStatTypes:Ljava/util/List;" + target = "Lnet/minecraft/client/gui/screen/StatsScreen$ItemStatsListWidget;itemStatTypes:Ljava/util/List;", + opcode = Opcodes.GETFIELD ) ) ) diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java index f79debb9..2a2222f2 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java @@ -1,5 +1,7 @@ package net.errorcraft.itematic.mixin.client.gui.screen.ingame; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.ItemKeys; @@ -30,11 +32,13 @@ public CreativeInventoryScreenExtender(CreativeInventoryScreen.CreativeScreenHan super(screenHandler, playerInventory, text); } + @Definition(id = "getCreativeHotbarStorage", method = "Lnet/minecraft/client/MinecraftClient;getCreativeHotbarStorage()Lnet/minecraft/client/option/HotbarStorage;") + @Expression("? = ?.getCreativeHotbarStorage()") @Inject( method = "setSelectedTab", at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/client/MinecraftClient;getCreativeHotbarStorage()Lnet/minecraft/client/option/HotbarStorage;" + value = "MIXINEXTRAS:EXPRESSION", + shift = At.Shift.AFTER ) ) @SuppressWarnings("ConstantConditions") @@ -75,7 +79,7 @@ private ItemStack getIconUseDynamicRegistry(ItemGroup instance, DrawContext cont @SuppressWarnings("ConstantConditions") private Stream> streamTagsUseDynamicRegistry(DefaultedRegistry instance) { return this.client.world.getRegistryManager() - .get(RegistryKeys.ITEM) + .getOrThrow(RegistryKeys.ITEM) .streamTags(); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java index ce627af3..3715f13e 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java @@ -26,6 +26,6 @@ private List stacks(RecipeBookGroup instance) { if (world == null) { return List.of(); } - return instance.itematic$icons(world.getRegistryManager().get(RegistryKeys.ITEM)); + return instance.itematic$icons(world.getRegistryManager().getOrThrow(RegistryKeys.ITEM)); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/world/LevelScreenProviderExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/world/LevelScreenProviderExtender.java index ef5b5d15..f759cfc3 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/world/LevelScreenProviderExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/world/LevelScreenProviderExtender.java @@ -20,7 +20,7 @@ public interface LevelScreenProviderExtender { ) ) private static CustomizeFlatLevelScreen newCustomizeFlatLevelScreenSetItemLookup(CustomizeFlatLevelScreen original, @Local DynamicRegistryManager registryManager) { - ((CustomizeFlatLevelScreenAccess) original).itematic$setItemLookup(registryManager.getWrapperOrThrow(RegistryKeys.ITEM)); + ((CustomizeFlatLevelScreenAccess) original).itematic$setItemLookup(registryManager.getOrThrow(RegistryKeys.ITEM)); return original; } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java index e6e822bd..bc695ba8 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java @@ -131,10 +131,11 @@ private static ItemStack newItemStackReturnEmptyStack(ItemConvertible item) { public List itematic$icons(Registry registry) { List stacks = new ArrayList<>(); for (RegistryKey item : this.iconKeys) { - registry.getEntry(item) + registry.getOptional(item) .map(ItemStack::new) .ifPresent(stacks::add); } + return stacks; } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java index 67814698..4f916e5d 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java @@ -87,18 +87,13 @@ private EquipmentSlot getSlotTypeUseItemComponent(ArmorItem instance, @Share("eq method = "renderArmor", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/render/entity/feature/ArmorFeatureRenderer;getContextModel()Lnet/minecraft/client/render/entity/model/EntityModel;" + target = "Lnet/minecraft/client/render/entity/model/BipedEntityModel;setAngles(Lnet/minecraft/client/render/entity/state/BipedEntityRenderState;)V" ), cancellable = true ) - private void storeArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, ItemStack stack, EquipmentSlot armorSlot, int light, A model, CallbackInfo info, @Local(argsOnly = true) ItemStack itemStack, @Share("armorItemComponent") LocalRef armorItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.ARMOR); - if (optionalComponent.isEmpty()) { - info.cancel(); - return; - } - - armorItemComponent.set(optionalComponent.get()); + private void storeArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, S state, ItemStack stack, EquipmentSlot slot, int light, A armorModel, CallbackInfo info, @Share("armorItemComponent") LocalRef armorItemComponent) { + stack.itematic$getComponent(ItemComponentTypes.ARMOR) + .ifPresentOrElse(armorItemComponent::set, info::cancel); } @Redirect( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java index 0649aa64..1e8a0f34 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java @@ -27,6 +27,6 @@ private static ItemStack createIconUseDynamicRegistry(Recipe instance, @Local return ItemStack.EMPTY; } - return ((RecipeAccess) instance).itematic$createIcon(world.getRegistryManager().getWrapperOrThrow(RegistryKeys.ITEM)); + return ((RecipeAccess) instance).itematic$createIcon(world.getRegistryManager().getOrThrow(RegistryKeys.ITEM)); } } diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java index de95e533..f4156ead 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java @@ -36,7 +36,7 @@ public RecipeProvider(FabricDataOutput dataOutput, CompletableFuture> provider, RegistryWrapper.WrapperLookup lookup) { - RegistryWrapper.Impl items = lookup.getWrapperOrThrow(RegistryKeys.ITEM); + RegistryWrapper.Impl items = lookup.getOrThrow(RegistryKeys.ITEM); provider.accept( Identifier.ofVanilla("honey_bottle"), shapelessRecipe(RecipeCategory.MISC, items.getOrThrow(ItemKeys.HONEY_BOTTLE)) diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/registry/ActionProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/registry/ActionProvider.java index 7d2f9870..f39f82d5 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/registry/ActionProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/registry/ActionProvider.java @@ -14,7 +14,7 @@ public ActionProvider(FabricDataOutput output, CompletableFuture potions = arg.getWrapperOrThrow(RegistryKeys.POTION); + protected void configure(RegistryWrapper.WrapperLookup lookup) { + RegistryWrapper.Impl potions = lookup.getOrThrow(RegistryKeys.POTION); BrewingRecipeRegistry brewingRecipeRegistry = BrewingRecipeRegistry.create(FeatureFlags.VANILLA_FEATURES); this.getOrCreateTagBuilder(PotionTags.TRADEABLE) .add(getAll(potions, potion -> !potion.value().getEffects().isEmpty() && brewingRecipeRegistry.isBrewable(potion))); diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/tag/TradeTagProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/tag/TradeTagProvider.java index 918c3623..23bd7670 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/tag/TradeTagProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/tag/TradeTagProvider.java @@ -16,7 +16,7 @@ public TradeTagProvider(FabricDataOutput output, CompletableFuture item, RegistryKey enchantment) { ItemStack stack = world.itematic$createStack(item); RegistryEntry enchantmentEntry = world.getRegistryManager() - .getWrapperOrThrow(RegistryKeys.ENCHANTMENT) + .getOrThrow(RegistryKeys.ENCHANTMENT) .getOrThrow(enchantment); stack.addEnchantment(enchantmentEntry, 1); return stack; diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java index 284a469e..40d9197c 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java @@ -23,7 +23,7 @@ public void usingBowWithMultishotSpawnsMultipleArrows(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.BOW); stack.addEnchantment( world.getRegistryManager() - .getWrapperOrThrow(RegistryKeys.ENCHANTMENT) + .getOrThrow(RegistryKeys.ENCHANTMENT) .getOrThrow(Enchantments.MULTISHOT), 1 ); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/CrossbowTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/CrossbowTestSuite.java index fdfeb605..807858c9 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/CrossbowTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/CrossbowTestSuite.java @@ -21,7 +21,7 @@ public void usingCrossbowWithInfinityChargesArrowFromInventoryButDoesNotConsumeT ItemStack stack = world.itematic$createStack(ItemKeys.CROSSBOW); stack.addEnchantment( world.getRegistryManager() - .getWrapperOrThrow(RegistryKeys.ENCHANTMENT) + .getOrThrow(RegistryKeys.ENCHANTMENT) .getOrThrow(Enchantments.INFINITY), 1 ); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java index 4359a7a1..8ea63d9f 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/HoneyBottleTestSuite.java @@ -1,8 +1,6 @@ package net.errorcraft.itematic.gametest.item; -import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.gametest.Assert; -import net.errorcraft.itematic.gametest.TestUtil; import net.errorcraft.itematic.item.ItemKeys; import net.fabricmc.fabric.api.gametest.v1.FabricGameTest; import net.minecraft.entity.effect.StatusEffectInstance; @@ -28,7 +26,7 @@ public void consumingHoneyBottleRemovesPoisonStatusEffect(TestContext context) { context.createTimedTaskRunner() .createAndAddReported(() -> stack.use(world, player, Hand.MAIN_HAND)) .expectMinDurationAndRun( - TestUtil.getDataComponent(stack, ItematicDataComponentTypes.USE_DURATION).ticks(stack, player), + stack.getMaxUseTime(player) + 1, () -> Assert.entityDoesNotHaveStatusEffect(player, StatusEffects.POISON) ) .completeIfSuccessful(); diff --git a/src/main/java/net/errorcraft/itematic/item/ItemAccess.java b/src/main/java/net/errorcraft/itematic/item/ItemAccess.java index fb7147ea..7d192756 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemAccess.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemAccess.java @@ -15,19 +15,15 @@ public class ItemAccess { private final Registry registry; public ItemAccess(DynamicRegistryManager registryManager) { - this.registry = registryManager.get(RegistryKeys.ITEM); + this.registry = registryManager.getOrThrow(RegistryKeys.ITEM); } public RegistryEntry.Reference getEntry(RegistryKey key) { - return this.registry.entryOf(key); + return this.registry.getOrThrow(key); } public Optional> getOptionalEntry(RegistryKey key) { - return this.registry.getEntry(key); - } - - public Optional> getOptionalEntry(int id) { - return this.registry.getEntry(id); + return this.registry.getOptional(key); } public Stream> streamEntries() { diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index d52b950c..3f16288d 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -35,7 +35,6 @@ import net.errorcraft.itematic.mixin.item.ArmorMaterialsAccessor; import net.errorcraft.itematic.mixin.item.BrushItemAccessor; import net.errorcraft.itematic.mixin.item.CrossbowItemAccessor; -import net.errorcraft.itematic.mixin.item.WindChargeItemAccessor; import net.errorcraft.itematic.potion.PotionKeys; import net.errorcraft.itematic.registry.ItematicRegistryKeys; import net.errorcraft.itematic.sound.SoundEventKeys; @@ -9296,7 +9295,7 @@ private void bootstrapProjectiles() { .with(ThrowableItemComponent.of(1.5f)) .with(ProjectileItemComponent.of(this.entityTypes.getOrThrow(EntityTypeKeys.WIND_CHARGE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.SHOOT_PROJECTILE))) - .with(CooldownItemComponent.of(WindChargeItemAccessor.cooldown())) + .with(CooldownItemComponent.of(10)) .build() )); this.registerable.register(ItemKeys.FIREWORK_ROCKET, create( diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java index 76337a05..156f27bb 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/PlayableItemComponent.java @@ -91,7 +91,7 @@ public Optional> instrument(ItemStack stack, return Optional.of(instrument); } - return lookup.getWrapperOrThrow(RegistryKeys.INSTRUMENT) + return lookup.getOrThrow(RegistryKeys.INSTRUMENT) .getOptional(this.instruments) .map(RegistryEntryList::stream) .flatMap(Stream::findFirst); diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/EnchantmentItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/EnchantmentItemGroupEntry.java index b2711556..f587ece8 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/EnchantmentItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/EnchantmentItemGroupEntry.java @@ -31,7 +31,7 @@ public ItemGroupEntryType type() { @Override public void addStacks(ItemGroup.DisplayContext context, ItemGroup.Entries entries) { - context.lookup().getWrapperOrThrow(RegistryKeys.ENCHANTMENT).streamEntries() + context.lookup().getOrThrow(RegistryKeys.ENCHANTMENT).streamEntries() .forEach(enchantment -> IntStream.rangeClosed(enchantment.value().getMinLevel(), enchantment.value().getMaxLevel()) .forEach(level -> entries.add( this.createStack(enchantment, level), diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/InstrumentItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/InstrumentItemGroupEntry.java index e87885fd..8444456c 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/InstrumentItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/InstrumentItemGroupEntry.java @@ -47,7 +47,7 @@ public ItemGroupEntryType type() { @Override protected Collection createStacks(ItemGroup.DisplayContext context) { return context.lookup() - .getWrapperOrThrow(RegistryKeys.INSTRUMENT) + .getOrThrow(RegistryKeys.INSTRUMENT) .getOrThrow(this.tag) .stream() .map(instrument -> { diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PaintingVariantItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PaintingVariantItemGroupEntry.java index 9174877c..0f4b7af2 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PaintingVariantItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PaintingVariantItemGroupEntry.java @@ -68,7 +68,7 @@ public ItemGroupEntryType type() { protected Collection createStacks(ItemGroup.DisplayContext context) { RegistryWrapper.WrapperLookup lookup = context.lookup(); RegistryOps ops = lookup.getOps(NbtOps.INSTANCE); - return lookup.getWrapperOrThrow(RegistryKeys.PAINTING_VARIANT) + return lookup.getOrThrow(RegistryKeys.PAINTING_VARIANT) .streamEntries() .filter(this.tag::test) .sorted(PAINTING_VARIANT_COMPARATOR) diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PotionItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PotionItemGroupEntry.java index 56df6ad8..ba488974 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PotionItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/PotionItemGroupEntry.java @@ -42,7 +42,7 @@ public ItemGroupEntryType type() { @Override protected Collection createStacks(ItemGroup.DisplayContext context) { return context.lookup() - .getWrapperOrThrow(RegistryKeys.POTION) + .getOrThrow(RegistryKeys.POTION) .streamEntries() .map(entry -> PotionContentsComponentUtil.setPotion(new ItemStack(this.item), entry)) .toList(); diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java index 8d102a26..690852a8 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java @@ -42,7 +42,7 @@ public ItemGroupEntryType type() { @Override protected Collection createStacks(ItemGroup.DisplayContext context) { Set set = ItemStackSet.create(); - context.lookup().getWrapperOrThrow(RegistryKeys.ITEM) + context.lookup().getOrThrow(RegistryKeys.ITEM) .streamEntries() .map(RegistryEntry::value) .map(item -> item.itematic$getComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT)) diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/TagItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/TagItemGroupEntry.java index ead2d0d2..b9cd8017 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/TagItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/TagItemGroupEntry.java @@ -38,7 +38,7 @@ public ItemGroupEntryType type() { @Override protected Collection createStacks(ItemGroup.DisplayContext context) { - return context.lookup().getWrapperOrThrow(RegistryKeys.ITEM).getOptional(this.tag) + return context.lookup().getOrThrow(RegistryKeys.ITEM).getOptional(this.tag) .map(RegistryEntryList.ListBacked::stream) .map(stream -> stream.map(ItemStack::new)) .map(Stream::toList) diff --git a/src/main/java/net/errorcraft/itematic/loot/function/SetRandomPotionItemModifier.java b/src/main/java/net/errorcraft/itematic/loot/function/SetRandomPotionItemModifier.java index 29790348..93aabeb4 100644 --- a/src/main/java/net/errorcraft/itematic/loot/function/SetRandomPotionItemModifier.java +++ b/src/main/java/net/errorcraft/itematic/loot/function/SetRandomPotionItemModifier.java @@ -43,7 +43,10 @@ public LootFunctionType getType() { protected ItemStack process(ItemStack stack, LootContext context) { Optional> optionalPotion = this.options.flatMap(potions -> potions.getRandom(context.getRandom())); if (optionalPotion.isEmpty()) { - optionalPotion = context.getWorld().getRegistryManager().get(RegistryKeys.POTION).getRandom(context.getRandom()); + optionalPotion = context.getWorld() + .getRegistryManager() + .getOrThrow(RegistryKeys.POTION) + .getRandom(context.getRandom()); } optionalPotion.ifPresent(potion -> stack.apply(DataComponentTypes.POTION_CONTENTS, PotionContentsComponent.DEFAULT, potion, PotionContentsComponent::with)); diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/DecoratedPotBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/DecoratedPotBlockExtender.java index 7e10f93d..01fa2591 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/DecoratedPotBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/DecoratedPotBlockExtender.java @@ -37,6 +37,7 @@ private boolean defaultSherdsAlwaysTrue(boolean original, @Local(argsOnly = true tooltip.add(new ItemStack(entry).getName().copyContentOnly().formatted(Formatting.GRAY)); } } + return true; } @@ -44,7 +45,7 @@ private boolean defaultSherdsAlwaysTrue(boolean original, @Local(argsOnly = true method = "method_49815", at = @At( value = "INVOKE", - target = "Lnet/minecraft/block/entity/Sherds;stream()Ljava/util/List;" + target = "Lnet/minecraft/block/entity/Sherds;toList()Ljava/util/List;" ) ) @SuppressWarnings("DataFlowIssue") diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java index c0d6a7a2..ca20ee44 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java @@ -79,7 +79,7 @@ private static boolean isOfForBucketUseRegistryKeyCheckStatic(ItemStack instance ) ) private static ItemStack newItemStackForWaterBucketUseRegistryEntry(ItemConvertible item, DynamicRegistryManager registryManager) { - return new ItemStack(registryManager.get(RegistryKeys.ITEM).entryOf(ItemKeys.WATER_BUCKET)); + return new ItemStack(registryManager.getOrThrow(RegistryKeys.ITEM).getOrThrow(ItemKeys.WATER_BUCKET)); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/SherdsExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/SherdsExtender.java index 5a95be69..84875f91 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/SherdsExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/SherdsExtender.java @@ -201,7 +201,7 @@ private static Optional> optionalUseValueFromList(T valu @Override public List> itematic$entries(RegistryWrapper.WrapperLookup lookup) { - RegistryWrapper.Impl items = lookup.getWrapperOrThrow(RegistryKeys.ITEM); + RegistryWrapper.Impl items = lookup.getOrThrow(RegistryKeys.ITEM); return Stream.of(this.back, this.left, this.right, this.front) .map(optional -> optional.orElse(items.getOrThrow(ItemKeys.BRICK))) .toList(); @@ -209,7 +209,7 @@ private static Optional> optionalUseValueFromList(T valu @Override public List> itematic$entriesForwards(RegistryWrapper.WrapperLookup lookup) { - RegistryWrapper.Impl items = lookup.getWrapperOrThrow(RegistryKeys.ITEM); + RegistryWrapper.Impl items = lookup.getOrThrow(RegistryKeys.ITEM); return Stream.of(this.front, this.left, this.right, this.back) .map(optional -> optional.orElse(items.getOrThrow(ItemKeys.BRICK))) .toList(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/command/argument/ScoreboardCriterionArgumentTypeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/command/argument/ScoreboardCriterionArgumentTypeExtender.java index 129d6a8f..8a6e4eef 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/command/argument/ScoreboardCriterionArgumentTypeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/command/argument/ScoreboardCriterionArgumentTypeExtender.java @@ -56,7 +56,7 @@ private void resetLookup(StringReader reader, CallbackInfoReturnable Iterator> getRegistryUseDynamicRegistry(Iterator original, @Local StatType type) { - return this.registryAccess.getWrapperOrThrow(type.getRegistry().getKey()) + return this.registryAccess.getOrThrow(type.getRegistry().getKey()) .streamEntries() .iterator(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GatherItemsVillagerTaskExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GatherItemsVillagerTaskExtender.java index 0c039722..6af17c0d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GatherItemsVillagerTaskExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GatherItemsVillagerTaskExtender.java @@ -19,6 +19,7 @@ import net.minecraft.registry.tag.TagKey; import net.minecraft.server.world.ServerWorld; import net.minecraft.village.VillagerProfession; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -40,7 +41,8 @@ public class GatherItemsVillagerTaskExtender { method = "keepRunning(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/entity/passive/VillagerEntity;J)V", at = @At( value = "FIELD", - target = "Lnet/minecraft/entity/passive/VillagerEntity;ITEM_FOOD_VALUES:Ljava/util/Map;" + target = "Lnet/minecraft/entity/passive/VillagerEntity;ITEM_FOOD_VALUES:Ljava/util/Map;", + opcode = Opcodes.GETSTATIC ) ) private Map getItemFoodPointsUseRegistryKey(ServerWorld serverWorld) { @@ -60,7 +62,7 @@ private Map getItemFoodPointsUseRegistryKey(ServerWorld serverWor at = @At("HEAD") ) private static void storeItemAccess(VillagerEntity entity, VillagerEntity target, CallbackInfoReturnable> info, @Share("itemAccess")LocalRef> itemRegistry) { - itemRegistry.set(entity.getWorld().getRegistryManager().get(RegistryKeys.ITEM)); + itemRegistry.set(entity.getWorld().getRegistryManager().getOrThrow(RegistryKeys.ITEM)); } @Redirect( @@ -75,8 +77,9 @@ private static ImmutableSet gatherableItemsUseDynamicRegistry(VillagerProf if (tag == null) { return ImmutableSet.of(); } + return itemRegistry.get() - .getEntryList(tag) + .getOptional(tag) .stream() .flatMap(RegistryEntryList::stream) .map(RegistryEntry::value) @@ -87,7 +90,8 @@ private static ImmutableSet gatherableItemsUseDynamicRegistry(VillagerProf method = "keepRunning(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/entity/passive/VillagerEntity;J)V", at = @At( value = "FIELD", - target = "Lnet/minecraft/item/Items;WHEAT:Lnet/minecraft/item/Item;" + target = "Lnet/minecraft/item/Items;WHEAT:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC ) ) private Item keepRunningGetWheatUseDynamicRegistry(ServerWorld serverWorld) { @@ -116,6 +120,7 @@ private static ItemStack newItemStackUseRegistryEntry(ItemConvertible item, int if (foundItem.get() == null) { return ItemStack.EMPTY; } + return new ItemStack(foundItem.get(), count); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java index 2fe0f776..a9d63e0b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java @@ -111,8 +111,10 @@ protected void fillRecipes(LootContext context) { return; } - Registry trades = context.getWorld().getRegistryManager().get(ItematicRegistryKeys.TRADE); - this.fillRecipesFromPool(trades.getEntryList(tag).orElseThrow(), 2, context); + Registry trades = context.getWorld() + .getRegistryManager() + .getOrThrow(ItematicRegistryKeys.TRADE); + this.fillRecipesFromPool(trades.getOrThrow(tag), 2, context); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java index 33f85f52..526904bb 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WanderingTraderEntityExtender.java @@ -82,9 +82,9 @@ private boolean isOfForVillagerSpawnEggUseRegistryKeyCheck(ItemStack instance, I @Override protected void fillRecipes(LootContext context) { - Registry trades = context.getWorld().getRegistryManager().get(ItematicRegistryKeys.TRADE); + Registry trades = context.getWorld().getRegistryManager().getOrThrow(ItematicRegistryKeys.TRADE); for (TagKey trade : TRADE_TO_AMOUNT.keySet()) { - this.fillRecipesFromPool(trades.getEntryList(trade).orElseThrow(), TRADE_TO_AMOUNT.getInt(trade), context); + this.fillRecipesFromPool(trades.getOrThrow(trade), TRADE_TO_AMOUNT.getInt(trade), context); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java index 7aef5d48..9ca1b80d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java @@ -107,7 +107,7 @@ private Stat getOrCreateStatUseRegistryEntry(StatType instance, private Stat getOrCreateStatUseRegistryEntry(StatType instance, T key) { RegistryEntry itemEntry = this.getWorld() .getRegistryManager() - .get(RegistryKeys.ITEM) + .getOrThrow(RegistryKeys.ITEM) .getEntry((Item) key); return instance.itematic$getOrCreateStat(itemEntry); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index 3796ccae..63a170ea 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -263,10 +263,13 @@ private void onItemEntityDestroyedUseItemComponent(ItemEntity entity, CallbackIn * @reason Uses the ItemComponent implementation for data-driven items. */ @Overwrite - public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + public boolean onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + boolean result = false; int usedTicks = user.itematic$itemUsedTicks(); StackReference stackReference = StackReferenceUtil.of(stack); for (ItemComponent component : this.itemComponents) { + // todo lol +// result |= component.stopUsing(stack, world, user, usedTicks, remainingUseTicks, stackReference::set); component.stopUsing(stack, world, user, usedTicks, remainingUseTicks, stackReference::set); } @@ -278,6 +281,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } tryUpdateItemStack(user, Hand.MAIN_HAND, stack, stackReference); + return result; } @Inject( diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemGroupExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemGroupExtender.java index 229eb11e..cca3779f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemGroupExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemGroupExtender.java @@ -49,7 +49,7 @@ private boolean collectEntries(ItemGroup.EntryCollector instance, ItemGroup.Disp } context.lookup() - .getWrapperOrThrow(ItematicRegistryKeys.ITEM_GROUP_ENTRY_PROVIDER) + .getOrThrow(ItematicRegistryKeys.ITEM_GROUP_ENTRY_PROVIDER) .getOptional(this.entryProviderTag) .ifPresent(entryList -> collectEntries(entryList, context, entries)); return false; diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/WindChargeItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/WindChargeItemAccessor.java deleted file mode 100644 index 1f95eb3d..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/WindChargeItemAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.WindChargeItem; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(WindChargeItem.class) -public interface WindChargeItemAccessor { - @Accessor("COOLDOWN") - static int cooldown() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java index be60267a..45e0f58c 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java @@ -49,7 +49,7 @@ private boolean isOfForAirUseIsEmptyCheck(ItemStack instance, Item item) { */ @Overwrite public ItemStack craft(CraftingRecipeInput input, RegistryWrapper.WrapperLookup lookup) { - ItemStack stack = lookup.getWrapperOrThrow(RegistryKeys.ITEM) + ItemStack stack = lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.DECORATED_POT) .map(ItemStack::new) .orElse(ItemStack.EMPTY); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java index 81fd716c..58afab6a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java @@ -80,7 +80,7 @@ private boolean fireworkStarUseRegistryKeyCheck(Ingredient instance, ItemStack i ) ) private ItemStack newItemStackForFireworkRocketUseRegistryEntry(ItemConvertible item, int count, @Local(argsOnly = true) RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.FIREWORK_ROCKET) .map(entry -> new ItemStack(entry, count)) .orElse(ItemStack.EMPTY); @@ -94,7 +94,7 @@ private ItemStack newItemStackForFireworkRocketUseRegistryEntry(ItemConvertible ) ) private ItemStack newItemStackForFireworkRocketUseRegistryEntry(ItemConvertible item, RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.FIREWORK_ROCKET) .map(ItemStack::new) .orElse(ItemStack.EMPTY); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java index 5ec2fdea..23345eba 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java @@ -45,8 +45,8 @@ private boolean containsKeyUseItemComponentCheck(Map V getUseItemComponent(Map instance, Object o, @Local ItemStack itemStack, @Share("fireworkTypeModifierItemComponent") LocalRef fireworkTypeModifierItemComponent) { - return (V) itemStack.itematic$getComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER) + private V getUseItemComponent(Map instance, Object o, @Local ItemStack input) { + return (V) input.itematic$getComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER) .map(FireworkShapeModifierItemComponent::shape) .orElse(null); } @@ -178,7 +178,7 @@ private DyeColor getColorUseItemComponent(DyeItem instance, @Share("dyeItemCompo ) ) private ItemStack newItemStackForFireworkStarUseRegistryEntry(ItemConvertible item, @Local(argsOnly = true) RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.FIREWORK_STAR) .map(ItemStack::new) .orElse(ItemStack.EMPTY); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java index db24aa98..ba869ddc 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java @@ -20,7 +20,7 @@ public class SmithingTrimRecipeExtender { ) ) private ItemStack newItemStackForIronChestplateUseRegistryEntry(ItemConvertible item, RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.IRON_CHESTPLATE) .map(ItemStack::new) .orElse(ItemStack.EMPTY); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/TippedArrowRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/TippedArrowRecipeExtender.java index 02d7d8dd..442858ed 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/TippedArrowRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/TippedArrowRecipeExtender.java @@ -34,7 +34,7 @@ private boolean isOfForArrowUseRegistryKeyCheck(ItemStack instance, Item item) { ) ) private ItemStack newItemStackForTippedArrowUseRegistryEntry(ItemConvertible item, int count, @Local(argsOnly = true) RegistryWrapper.WrapperLookup lookup) { - return lookup.getWrapperOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .getOptional(ItemKeys.TIPPED_ARROW) .map(entry -> new ItemStack(entry, count)) .orElse(ItemStack.EMPTY); diff --git a/src/main/java/net/errorcraft/itematic/mixin/scoreboard/ScoreboardCriterionExtender.java b/src/main/java/net/errorcraft/itematic/mixin/scoreboard/ScoreboardCriterionExtender.java index 75dde9c7..abeb42e5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/scoreboard/ScoreboardCriterionExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/scoreboard/ScoreboardCriterionExtender.java @@ -32,13 +32,13 @@ public class ScoreboardCriterionExtender implements ScoreboardCriterionAccess { method = "getOrCreateStatCriterion(Lnet/minecraft/stat/StatType;Lnet/minecraft/util/Identifier;)Ljava/util/Optional;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/registry/Registry;getOrEmpty(Lnet/minecraft/util/Identifier;)Ljava/util/Optional;" + target = "Lnet/minecraft/registry/Registry;getOptionalValue(Lnet/minecraft/util/Identifier;)Ljava/util/Optional;" ) ) private static Optional> getOrEmptyUseDynamicRegistry(Registry instance, Identifier id) { RegistryKey> key = instance.getKey(); return ScoreboardCriterionUtil.lookup() - .getWrapperOrThrow(key) + .getOrThrow(key) .getOptional(RegistryKey.of(key, id)); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/stat/ServerStatHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/stat/ServerStatHandlerExtender.java index 168dffbe..5b1cc960 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/stat/ServerStatHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/stat/ServerStatHandlerExtender.java @@ -33,7 +33,7 @@ public class ServerStatHandlerExtender extends StatHandler { ) private Function>> flatMapToEntryUseDynamicRegistry(Function> mapper, @Local(argsOnly = true) StatType type) { return id -> this.server.getRegistryManager() - .get(type.getRegistry().getKey()) + .getOrThrow(type.getRegistry().getKey()) .getEntry(id); } @@ -57,7 +57,7 @@ private Function, Stat> mapToStatUseRegistr ) private Identifier getStatIdUseDynamicRegistry(Stat stat) { return this.server.getRegistryManager() - .get(stat.getType().getRegistry().getKey()) + .getOrThrow(stat.getType().getRegistry().getKey()) .getId(stat.getValue()); } } diff --git a/src/main/java/net/errorcraft/itematic/village/trade/modifier/modifiers/EnchantWithLevelsTradeModifier.java b/src/main/java/net/errorcraft/itematic/village/trade/modifier/modifiers/EnchantWithLevelsTradeModifier.java index c82cbb86..b20f8622 100644 --- a/src/main/java/net/errorcraft/itematic/village/trade/modifier/modifiers/EnchantWithLevelsTradeModifier.java +++ b/src/main/java/net/errorcraft/itematic/village/trade/modifier/modifiers/EnchantWithLevelsTradeModifier.java @@ -43,8 +43,8 @@ public Optional apply(Trade.Input wants, ItemStack gives, LootContex Random random = context.getRandom(); int level = Math.max(1, this.level.get(random)); DynamicRegistryManager registryManager = context.getWorld().getRegistryManager(); - Optional> enchantments = registryManager.get(RegistryKeys.ENCHANTMENT) - .getEntryList(EnchantmentTags.ON_TRADED_EQUIPMENT); + Optional> enchantments = registryManager.getOrThrow(RegistryKeys.ENCHANTMENT) + .getOptional(EnchantmentTags.ON_TRADED_EQUIPMENT); ItemStack givesActual = EnchantmentHelper.enchant(random, gives, level, registryManager, enchantments); wants.getStack(this.index).itematic$tryIncrement(level); return Optional.of(new TradedItem(givesActual.getRegistryEntry(), givesActual.getCount(), ComponentPredicate.of(givesActual.getComponents()))); diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 7863821a..1728d590 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -284,7 +284,6 @@ "item.RangedWeaponItemAccessor", "item.SmithingTemplateItemAccessor", "item.SpawnEggItemAccessor", - "item.WindChargeItemAccessor", "item.tooltip.BundleTooltipDataExtender", "loot.ContainerComponentModifierExtender", "loot.ContainerComponentModifiersExtender$BundleContentsExtender", From 851e65080e32dd4a263cd7853fb9f062617ee8af Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Tue, 3 Feb 2026 00:25:53 +0100 Subject: [PATCH 03/11] Fix item holders --- .../BundleTooltipSubmenuHandlerExtender.java | 23 +++++++++++++++++++ .../render/item/ItemRendererExtender.java | 20 ++++++++++++++++ .../resources/itematic.client.mixins.json | 1 + .../item/component/ItemComponent.java | 4 +++- .../components/ShooterItemComponent.java | 4 ++-- .../components/ThrowableItemComponent.java | 6 ++++- .../components/ZoomItemComponent.java | 3 ++- .../item/shooter/method/ShooterMethod.java | 2 +- .../methods/ChargeableShooterMethod.java | 7 +++--- .../method/methods/DirectShooterMethod.java | 8 ++++--- .../itematic/mixin/item/ItemExtender.java | 4 +--- 11 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java new file mode 100644 index 00000000..e3fbfe17 --- /dev/null +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java @@ -0,0 +1,23 @@ +package net.errorcraft.itematic.mixin.client.gui.tooltip; + +import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.client.gui.tooltip.BundleTooltipSubmenuHandler; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BundleTooltipSubmenuHandler.class) +public class BundleTooltipSubmenuHandlerExtender { + @Redirect( + method = "isApplicableTo", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + ) + ) + private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { + return instance.itematic$hasComponent(ItemComponentTypes.ITEM_HOLDER); + } +} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java index 8a87ff64..ec8b72c1 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.mixin.client.render.item; import net.errorcraft.itematic.item.ItemKeys; +import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -72,6 +73,25 @@ private boolean isOfForSpyglassUseRegistryKeyCheck(ItemStack instance, Item item return instance.itematic$isOf(ItemKeys.SPYGLASS); } + @Redirect( + method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", + ordinal = 0 + ), + slice = @Slice( + from = @At( + value = "FIELD", + target = "Lnet/minecraft/item/Items;BUNDLE:Lnet/minecraft/item/Item;", + opcode = Opcodes.GETSTATIC + ) + ) + ) + private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { + return instance.itematic$hasComponent(ItemComponentTypes.ITEM_HOLDER); + } + @Redirect( method = "usesDynamicDisplay", at = @At( diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index 4a476ccd..702a33ea 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -31,6 +31,7 @@ "gui.screen.world.LevelScreenProviderExtender", "gui.screen.world.PresetsScreenExtender$SuperflatPresetsListWidgetExtender$SuperflatPresetEntryExtender", "gui.tooltip.BundleTooltipComponentExtender", + "gui.tooltip.BundleTooltipSubmenuHandlerExtender", "gui.tooltip.TooltipComponentExtender", "network.AbstractClientPlayerEntityExtender", "network.ClientPlayerEntityExtender", diff --git a/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java index 42cd5a7b..b2c6c0d3 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/ItemComponent.java @@ -54,7 +54,9 @@ default boolean postMine(ItemStack stack, World world, BlockState state, BlockPo default void using(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks) {} - default void stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) {} + default boolean stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { + return false; + } default void finishUsing(World world, LivingEntity user, ItemStack stack, int usedTicks, ItemStackConsumer resultStackConsumer) {} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java index 49171bd7..37d26b7b 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java @@ -86,8 +86,8 @@ public void using(ItemStack stack, World world, LivingEntity user, int usedTicks } @Override - public void stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { - this.method.stop(this, stack, world, user, usedTicks); + public boolean stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { + return this.method.stop(this, stack, world, user, usedTicks); } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java index 5c1af562..ddfa3b08 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java @@ -72,13 +72,17 @@ public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack } @Override - public void stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { + public boolean stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { if (this.drawDuration.filter(drawDuration -> drawDuration.test(usedTicks)).isPresent()) { this.createEntity(world, user, stack, resultStackConsumer); if (user instanceof PlayerEntity player) { player.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); } + + return true; } + + return false; } private ItemResult createEntity(World world, LivingEntity user, ItemStack stack, ItemStackConsumer resultStackConsumer) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java index 5a94f441..f8534f8b 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ZoomItemComponent.java @@ -46,8 +46,9 @@ public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack } @Override - public void stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { + public boolean stopUsing(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks, ItemStackConsumer resultStackConsumer) { this.playStopSound(user); + return true; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/shooter/method/ShooterMethod.java b/src/main/java/net/errorcraft/itematic/item/shooter/method/ShooterMethod.java index 4e5bed3c..b833a5a4 100644 --- a/src/main/java/net/errorcraft/itematic/item/shooter/method/ShooterMethod.java +++ b/src/main/java/net/errorcraft/itematic/item/shooter/method/ShooterMethod.java @@ -21,7 +21,7 @@ public interface ShooterMethod { void addComponents(ComponentMap.Builder builder); boolean tryShoot(ShooterItemComponent component, ItemStack stack, World world, LivingEntity user, Hand hand); void hold(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks); - void stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks); + boolean stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks); default void initializeProjectile(LivingEntity user, ProjectileEntity projectile, int index, float power, float uncertainty, float angle, boolean critical, @Nullable LivingEntity target) { if (critical && projectile instanceof PersistentProjectileEntity persistentProjectile) { persistentProjectile.setCritical(true); diff --git a/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/ChargeableShooterMethod.java b/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/ChargeableShooterMethod.java index 90b75542..cac4d3f5 100644 --- a/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/ChargeableShooterMethod.java +++ b/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/ChargeableShooterMethod.java @@ -110,18 +110,19 @@ public void hold(ShooterItemComponent shooter, ItemStack stack, World world, Liv } @Override - public void stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks) { + public boolean stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks) { if (usedTicks < CrossbowItem.getPullTime(stack, user)) { - return; + return false; } if (CrossbowItem.isCharged(stack) || !chargeProjectiles(user, stack)) { - return; + return false; } CrossbowItem.LoadingSounds chargingSounds = this.chargingSounds(stack); float pitch = MathHelper.lerp(world.getRandom().nextFloat(), 0.87f, 1.2f); chargingSounds.end().ifPresent(sound -> world.playSound(null, user.getX(), user.getY(), user.getZ(), sound.value(), user.getSoundCategory(), 1.0f, pitch)); + return true; } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/DirectShooterMethod.java b/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/DirectShooterMethod.java index 90b98098..3e4afc29 100644 --- a/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/DirectShooterMethod.java +++ b/src/main/java/net/errorcraft/itematic/item/shooter/method/methods/DirectShooterMethod.java @@ -60,15 +60,15 @@ public boolean tryShoot(ShooterItemComponent component, ItemStack stack, World w public void hold(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks) {} @Override - public void stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks) { + public boolean stop(ShooterItemComponent shooter, ItemStack stack, World world, LivingEntity user, int usedTicks) { ItemStack ammunition = user.itematic$getAmmunition(stack); if (ammunition.isEmpty()) { - return; + return false; } float pullProgress = this.pullProgress(usedTicks); if (pullProgress < 0.1f) { - return; + return false; } List projectiles = RangedWeaponItemAccessor.load(stack, ammunition, user); @@ -84,6 +84,8 @@ public void stop(ShooterItemComponent shooter, ItemStack stack, World world, Liv if (user instanceof PlayerEntity playerEntity) { playerEntity.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); } + + return true; } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index 63a170ea..bdd274dd 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -268,9 +268,7 @@ public boolean onStoppedUsing(ItemStack stack, World world, LivingEntity user, i int usedTicks = user.itematic$itemUsedTicks(); StackReference stackReference = StackReferenceUtil.of(stack); for (ItemComponent component : this.itemComponents) { - // todo lol -// result |= component.stopUsing(stack, world, user, usedTicks, remainingUseTicks, stackReference::set); - component.stopUsing(stack, world, user, usedTicks, remainingUseTicks, stackReference::set); + result |= component.stopUsing(stack, world, user, usedTicks, remainingUseTicks, stackReference::set); } if (world instanceof ServerWorld serverWorld) { From 959d9ef2a78cbcc620e56ee2b4123cd4fd434a5b Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Wed, 4 Feb 2026 15:42:03 +0100 Subject: [PATCH 04/11] Port to 24w36a --- gradle.properties | 6 +- .../HorseArmorFeatureRendererAccess.java | 7 - .../WolfArmorFeatureRendererAccess.java | 7 - .../ItemHolderOccupancyProgressProvider.java | 2 +- .../client/color/item/ItemColorsExtender.java | 2 +- .../gui/screen/StatsScreenExtender.java | 10 +- .../gui/screen/ingame/LoomScreenExtender.java | 2 +- .../screen/ingame/SmithingScreenExtender.java | 4 +- ...stractFurnaceRecipeBookScreenExtender.java | 2 +- .../BundleTooltipSubmenuHandlerExtender.java | 2 +- .../AbstractClientPlayerEntityExtender.java | 2 +- .../ClientPlayNetworkHandlerExtender.java | 2 +- .../network/ClientPlayerEntityExtender.java | 14 +- ...coratedPotBlockEntityRendererExtender.java | 2 +- .../entity/HorseEntityRendererExtender.java | 24 - .../ItemFrameEntityRendererExtender.java | 2 +- .../entity/PlayerEntityRendererExtender.java | 2 +- .../entity/WolfEntityRendererExtender.java | 24 - .../feature/ArmorFeatureRendererExtender.java | 215 +- .../feature/CapeFeatureRendererExtender.java | 22 +- .../ElytraFeatureRendererExtender.java | 26 +- .../feature/HeadFeatureRendererExtender.java | 29 +- .../HorseArmorFeatureRendererExtender.java | 141 +- .../WolfArmorFeatureRendererExtender.java | 167 +- .../BuiltinModelItemRendererExtender.java | 2 +- .../render/item/HeldItemRendererExtender.java | 8 +- .../render/item/ItemModelsExtender.java | 31 - .../render/item/ItemRendererExtender.java | 27 +- .../model/json/ModelOverrideListExtender.java | 4 +- .../client/world/ClientWorldExtender.java | 2 +- .../resources/itematic.client.mixins.json | 3 - .../itematic/data/ItematicData.java | 1 - .../registry/ArmorMaterialProvider.java | 24 - .../itematic/gametest/TestUtil.java | 8 +- .../gametest/item/BundleTestSuite.java | 2 +- .../EquipmentItemComponentTestSuite.java | 4 +- .../component/FoodItemComponentTestSuite.java | 4 +- .../ItemHolderItemComponentTestSuite.java | 2 +- .../ThrowableItemComponentTestSuite.java | 2 +- .../WeaponItemComponentTestSuite.java | 6 +- .../minecraft/armor_material/armadillo.json | 12 - .../minecraft/armor_material/chainmail.json | 12 - .../minecraft/armor_material/diamond.json | 12 - .../data/minecraft/armor_material/gold.json | 12 - .../data/minecraft/armor_material/iron.json | 12 - .../minecraft/armor_material/leather.json | 12 - .../minecraft/armor_material/netherite.json | 12 - .../data/minecraft/armor_material/turtle.json | 12 - .../data/minecraft/item/acacia_boat.json | 9 +- .../data/minecraft/item/acacia_button.json | 9 +- .../minecraft/item/acacia_chest_boat.json | 9 +- .../data/minecraft/item/acacia_door.json | 9 +- .../data/minecraft/item/acacia_fence.json | 9 +- .../minecraft/item/acacia_fence_gate.json | 9 +- .../minecraft/item/acacia_hanging_sign.json | 9 +- .../data/minecraft/item/acacia_leaves.json | 9 +- .../data/minecraft/item/acacia_log.json | 9 +- .../data/minecraft/item/acacia_planks.json | 9 +- .../minecraft/item/acacia_pressure_plate.json | 9 +- .../data/minecraft/item/acacia_sapling.json | 9 +- .../data/minecraft/item/acacia_sign.json | 9 +- .../data/minecraft/item/acacia_slab.json | 9 +- .../data/minecraft/item/acacia_stairs.json | 9 +- .../data/minecraft/item/acacia_trapdoor.json | 9 +- .../data/minecraft/item/acacia_wood.json | 9 +- .../data/minecraft/item/activator_rail.json | 9 +- .../generated/data/minecraft/item/air.json | 3 +- .../data/minecraft/item/allay_spawn_egg.json | 9 +- .../generated/data/minecraft/item/allium.json | 9 +- .../data/minecraft/item/amethyst_block.json | 9 +- .../data/minecraft/item/amethyst_cluster.json | 9 +- .../data/minecraft/item/amethyst_shard.json | 9 +- .../data/minecraft/item/ancient_debris.json | 9 +- .../data/minecraft/item/andesite.json | 9 +- .../data/minecraft/item/andesite_slab.json | 9 +- .../data/minecraft/item/andesite_stairs.json | 9 +- .../data/minecraft/item/andesite_wall.json | 9 +- .../minecraft/item/angler_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/anvil.json | 9 +- .../generated/data/minecraft/item/apple.json | 9 +- .../minecraft/item/archer_pottery_sherd.json | 11 +- .../data/minecraft/item/armadillo_scute.json | 9 +- .../minecraft/item/armadillo_spawn_egg.json | 9 +- .../data/minecraft/item/armor_stand.json | 9 +- .../minecraft/item/arms_up_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/arrow.json | 9 +- .../data/minecraft/item/axolotl_bucket.json | 9 +- .../minecraft/item/axolotl_spawn_egg.json | 9 +- .../generated/data/minecraft/item/azalea.json | 9 +- .../data/minecraft/item/azalea_leaves.json | 9 +- .../data/minecraft/item/azure_bluet.json | 9 +- .../data/minecraft/item/baked_potato.json | 9 +- .../generated/data/minecraft/item/bamboo.json | 9 +- .../data/minecraft/item/bamboo_block.json | 9 +- .../data/minecraft/item/bamboo_button.json | 9 +- .../minecraft/item/bamboo_chest_raft.json | 9 +- .../data/minecraft/item/bamboo_door.json | 9 +- .../data/minecraft/item/bamboo_fence.json | 9 +- .../minecraft/item/bamboo_fence_gate.json | 9 +- .../minecraft/item/bamboo_hanging_sign.json | 9 +- .../data/minecraft/item/bamboo_mosaic.json | 9 +- .../minecraft/item/bamboo_mosaic_slab.json | 9 +- .../minecraft/item/bamboo_mosaic_stairs.json | 9 +- .../data/minecraft/item/bamboo_planks.json | 9 +- .../minecraft/item/bamboo_pressure_plate.json | 9 +- .../data/minecraft/item/bamboo_raft.json | 9 +- .../data/minecraft/item/bamboo_sign.json | 9 +- .../data/minecraft/item/bamboo_slab.json | 9 +- .../data/minecraft/item/bamboo_stairs.json | 9 +- .../data/minecraft/item/bamboo_trapdoor.json | 9 +- .../generated/data/minecraft/item/barrel.json | 9 +- .../data/minecraft/item/barrier.json | 11 +- .../generated/data/minecraft/item/basalt.json | 9 +- .../data/minecraft/item/bat_spawn_egg.json | 9 +- .../generated/data/minecraft/item/beacon.json | 11 +- .../data/minecraft/item/bedrock.json | 9 +- .../data/minecraft/item/bee_nest.json | 9 +- .../data/minecraft/item/bee_spawn_egg.json | 9 +- .../generated/data/minecraft/item/beef.json | 9 +- .../data/minecraft/item/beehive.json | 9 +- .../data/minecraft/item/beetroot.json | 9 +- .../data/minecraft/item/beetroot_seeds.json | 9 +- .../data/minecraft/item/beetroot_soup.json | 9 +- .../generated/data/minecraft/item/bell.json | 9 +- .../data/minecraft/item/big_dripleaf.json | 9 +- .../data/minecraft/item/birch_boat.json | 9 +- .../data/minecraft/item/birch_button.json | 9 +- .../data/minecraft/item/birch_chest_boat.json | 9 +- .../data/minecraft/item/birch_door.json | 9 +- .../data/minecraft/item/birch_fence.json | 9 +- .../data/minecraft/item/birch_fence_gate.json | 9 +- .../minecraft/item/birch_hanging_sign.json | 9 +- .../data/minecraft/item/birch_leaves.json | 9 +- .../data/minecraft/item/birch_log.json | 9 +- .../data/minecraft/item/birch_planks.json | 9 +- .../minecraft/item/birch_pressure_plate.json | 9 +- .../data/minecraft/item/birch_sapling.json | 9 +- .../data/minecraft/item/birch_sign.json | 9 +- .../data/minecraft/item/birch_slab.json | 9 +- .../data/minecraft/item/birch_stairs.json | 9 +- .../data/minecraft/item/birch_trapdoor.json | 9 +- .../data/minecraft/item/birch_wood.json | 9 +- .../data/minecraft/item/black_banner.json | 9 +- .../data/minecraft/item/black_bed.json | 9 +- .../data/minecraft/item/black_candle.json | 9 +- .../data/minecraft/item/black_carpet.json | 19 +- .../data/minecraft/item/black_concrete.json | 9 +- .../minecraft/item/black_concrete_powder.json | 9 +- .../data/minecraft/item/black_dye.json | 9 +- .../item/black_glazed_terracotta.json | 9 +- .../minecraft/item/black_shulker_box.json | 9 +- .../minecraft/item/black_stained_glass.json | 9 +- .../item/black_stained_glass_pane.json | 9 +- .../data/minecraft/item/black_terracotta.json | 9 +- .../data/minecraft/item/black_wool.json | 9 +- .../data/minecraft/item/blackstone.json | 9 +- .../data/minecraft/item/blackstone_slab.json | 9 +- .../minecraft/item/blackstone_stairs.json | 9 +- .../data/minecraft/item/blackstone_wall.json | 9 +- .../minecraft/item/blade_pottery_sherd.json | 11 +- .../data/minecraft/item/blast_furnace.json | 9 +- .../data/minecraft/item/blaze_powder.json | 9 +- .../data/minecraft/item/blaze_rod.json | 9 +- .../data/minecraft/item/blaze_spawn_egg.json | 9 +- .../data/minecraft/item/blue_banner.json | 9 +- .../data/minecraft/item/blue_bed.json | 9 +- .../data/minecraft/item/blue_candle.json | 9 +- .../data/minecraft/item/blue_carpet.json | 19 +- .../data/minecraft/item/blue_concrete.json | 9 +- .../minecraft/item/blue_concrete_powder.json | 9 +- .../data/minecraft/item/blue_dye.json | 9 +- .../item/blue_glazed_terracotta.json | 9 +- .../data/minecraft/item/blue_ice.json | 9 +- .../data/minecraft/item/blue_orchid.json | 9 +- .../data/minecraft/item/blue_shulker_box.json | 9 +- .../minecraft/item/blue_stained_glass.json | 9 +- .../item/blue_stained_glass_pane.json | 9 +- .../data/minecraft/item/blue_terracotta.json | 9 +- .../data/minecraft/item/blue_wool.json | 9 +- .../data/minecraft/item/bogged_spawn_egg.json | 9 +- .../bolt_armor_trim_smithing_template.json | 11 +- .../generated/data/minecraft/item/bone.json | 9 +- .../data/minecraft/item/bone_block.json | 9 +- .../data/minecraft/item/bone_meal.json | 9 +- .../generated/data/minecraft/item/book.json | 9 +- .../data/minecraft/item/bookshelf.json | 9 +- .../item/bordure_indented_banner_pattern.json | 11 +- .../generated/data/minecraft/item/bow.json | 9 +- .../generated/data/minecraft/item/bowl.json | 9 +- .../data/minecraft/item/brain_coral.json | 9 +- .../minecraft/item/brain_coral_block.json | 9 +- .../data/minecraft/item/brain_coral_fan.json | 9 +- .../generated/data/minecraft/item/bread.json | 9 +- .../data/minecraft/item/breeze_rod.json | 9 +- .../data/minecraft/item/breeze_spawn_egg.json | 9 +- .../minecraft/item/brewer_pottery_sherd.json | 11 +- .../data/minecraft/item/brewing_stand.json | 9 +- .../generated/data/minecraft/item/brick.json | 9 +- .../data/minecraft/item/brick_slab.json | 9 +- .../data/minecraft/item/brick_stairs.json | 9 +- .../data/minecraft/item/brick_wall.json | 9 +- .../generated/data/minecraft/item/bricks.json | 9 +- .../data/minecraft/item/brown_banner.json | 9 +- .../data/minecraft/item/brown_bed.json | 9 +- .../data/minecraft/item/brown_candle.json | 9 +- .../data/minecraft/item/brown_carpet.json | 19 +- .../data/minecraft/item/brown_concrete.json | 9 +- .../minecraft/item/brown_concrete_powder.json | 9 +- .../data/minecraft/item/brown_dye.json | 9 +- .../item/brown_glazed_terracotta.json | 9 +- .../data/minecraft/item/brown_mushroom.json | 9 +- .../minecraft/item/brown_mushroom_block.json | 9 +- .../minecraft/item/brown_shulker_box.json | 9 +- .../minecraft/item/brown_stained_glass.json | 9 +- .../item/brown_stained_glass_pane.json | 9 +- .../data/minecraft/item/brown_terracotta.json | 9 +- .../data/minecraft/item/brown_wool.json | 9 +- .../generated/data/minecraft/item/brush.json | 9 +- .../data/minecraft/item/bubble_coral.json | 9 +- .../minecraft/item/bubble_coral_block.json | 9 +- .../data/minecraft/item/bubble_coral_fan.json | 9 +- .../generated/data/minecraft/item/bucket.json | 9 +- .../data/minecraft/item/budding_amethyst.json | 9 +- .../generated/data/minecraft/item/bundle.json | 19 +- .../minecraft/item/burn_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/cactus.json | 9 +- .../generated/data/minecraft/item/cake.json | 9 +- .../data/minecraft/item/calcite.json | 9 +- .../item/calibrated_sculk_sensor.json | 9 +- .../data/minecraft/item/camel_spawn_egg.json | 9 +- .../data/minecraft/item/campfire.json | 9 +- .../generated/data/minecraft/item/candle.json | 9 +- .../generated/data/minecraft/item/carrot.json | 9 +- .../minecraft/item/carrot_on_a_stick.json | 9 +- .../minecraft/item/cartography_table.json | 9 +- .../data/minecraft/item/carved_pumpkin.json | 10 +- .../data/minecraft/item/cat_spawn_egg.json | 9 +- .../data/minecraft/item/cauldron.json | 9 +- .../minecraft/item/cave_spider_spawn_egg.json | 9 +- .../generated/data/minecraft/item/chain.json | 9 +- .../minecraft/item/chain_command_block.json | 11 +- .../data/minecraft/item/chainmail_boots.json | 17 +- .../minecraft/item/chainmail_chestplate.json | 17 +- .../data/minecraft/item/chainmail_helmet.json | 17 +- .../minecraft/item/chainmail_leggings.json | 17 +- .../data/minecraft/item/charcoal.json | 9 +- .../data/minecraft/item/cherry_boat.json | 9 +- .../data/minecraft/item/cherry_button.json | 9 +- .../minecraft/item/cherry_chest_boat.json | 9 +- .../data/minecraft/item/cherry_door.json | 9 +- .../data/minecraft/item/cherry_fence.json | 9 +- .../minecraft/item/cherry_fence_gate.json | 9 +- .../minecraft/item/cherry_hanging_sign.json | 9 +- .../data/minecraft/item/cherry_leaves.json | 9 +- .../data/minecraft/item/cherry_log.json | 9 +- .../data/minecraft/item/cherry_planks.json | 9 +- .../minecraft/item/cherry_pressure_plate.json | 9 +- .../data/minecraft/item/cherry_sapling.json | 9 +- .../data/minecraft/item/cherry_sign.json | 9 +- .../data/minecraft/item/cherry_slab.json | 9 +- .../data/minecraft/item/cherry_stairs.json | 9 +- .../data/minecraft/item/cherry_trapdoor.json | 9 +- .../data/minecraft/item/cherry_wood.json | 9 +- .../generated/data/minecraft/item/chest.json | 9 +- .../data/minecraft/item/chest_minecart.json | 9 +- .../data/minecraft/item/chicken.json | 9 +- .../minecraft/item/chicken_spawn_egg.json | 9 +- .../data/minecraft/item/chipped_anvil.json | 9 +- .../minecraft/item/chiseled_bookshelf.json | 9 +- .../data/minecraft/item/chiseled_copper.json | 9 +- .../minecraft/item/chiseled_deepslate.json | 9 +- .../item/chiseled_nether_bricks.json | 9 +- .../item/chiseled_polished_blackstone.json | 9 +- .../minecraft/item/chiseled_quartz_block.json | 9 +- .../item/chiseled_red_sandstone.json | 9 +- .../minecraft/item/chiseled_sandstone.json | 9 +- .../minecraft/item/chiseled_stone_bricks.json | 9 +- .../data/minecraft/item/chiseled_tuff.json | 9 +- .../minecraft/item/chiseled_tuff_bricks.json | 9 +- .../data/minecraft/item/chorus_flower.json | 9 +- .../data/minecraft/item/chorus_fruit.json | 9 +- .../data/minecraft/item/chorus_plant.json | 9 +- .../generated/data/minecraft/item/clay.json | 9 +- .../data/minecraft/item/clay_ball.json | 9 +- .../generated/data/minecraft/item/clock.json | 9 +- .../generated/data/minecraft/item/coal.json | 9 +- .../data/minecraft/item/coal_block.json | 9 +- .../data/minecraft/item/coal_ore.json | 9 +- .../data/minecraft/item/coarse_dirt.json | 9 +- .../coast_armor_trim_smithing_template.json | 11 +- .../minecraft/item/cobbled_deepslate.json | 9 +- .../item/cobbled_deepslate_slab.json | 9 +- .../item/cobbled_deepslate_stairs.json | 9 +- .../item/cobbled_deepslate_wall.json | 9 +- .../data/minecraft/item/cobblestone.json | 9 +- .../data/minecraft/item/cobblestone_slab.json | 9 +- .../minecraft/item/cobblestone_stairs.json | 9 +- .../data/minecraft/item/cobblestone_wall.json | 9 +- .../generated/data/minecraft/item/cobweb.json | 9 +- .../data/minecraft/item/cocoa_beans.json | 9 +- .../generated/data/minecraft/item/cod.json | 9 +- .../data/minecraft/item/cod_bucket.json | 9 +- .../data/minecraft/item/cod_spawn_egg.json | 9 +- .../data/minecraft/item/command_block.json | 11 +- .../item/command_block_minecart.json | 11 +- .../data/minecraft/item/comparator.json | 9 +- .../data/minecraft/item/compass.json | 9 +- .../data/minecraft/item/composter.json | 9 +- .../data/minecraft/item/conduit.json | 11 +- .../data/minecraft/item/cooked_beef.json | 9 +- .../data/minecraft/item/cooked_chicken.json | 9 +- .../data/minecraft/item/cooked_cod.json | 9 +- .../data/minecraft/item/cooked_mutton.json | 9 +- .../data/minecraft/item/cooked_porkchop.json | 9 +- .../data/minecraft/item/cooked_rabbit.json | 9 +- .../data/minecraft/item/cooked_salmon.json | 9 +- .../generated/data/minecraft/item/cookie.json | 9 +- .../data/minecraft/item/copper_block.json | 9 +- .../data/minecraft/item/copper_bulb.json | 9 +- .../data/minecraft/item/copper_door.json | 9 +- .../data/minecraft/item/copper_grate.json | 9 +- .../data/minecraft/item/copper_ingot.json | 9 +- .../data/minecraft/item/copper_ore.json | 9 +- .../data/minecraft/item/copper_trapdoor.json | 9 +- .../data/minecraft/item/cornflower.json | 9 +- .../data/minecraft/item/cow_spawn_egg.json | 9 +- .../item/cracked_deepslate_bricks.json | 9 +- .../item/cracked_deepslate_tiles.json | 9 +- .../minecraft/item/cracked_nether_bricks.json | 9 +- .../cracked_polished_blackstone_bricks.json | 9 +- .../minecraft/item/cracked_stone_bricks.json | 9 +- .../data/minecraft/item/crafter.json | 9 +- .../data/minecraft/item/crafting_table.json | 9 +- .../item/creeper_banner_pattern.json | 11 +- .../data/minecraft/item/creeper_head.json | 12 +- .../minecraft/item/creeper_spawn_egg.json | 9 +- .../data/minecraft/item/crimson_button.json | 9 +- .../data/minecraft/item/crimson_door.json | 9 +- .../data/minecraft/item/crimson_fence.json | 9 +- .../minecraft/item/crimson_fence_gate.json | 9 +- .../data/minecraft/item/crimson_fungus.json | 9 +- .../minecraft/item/crimson_hanging_sign.json | 9 +- .../data/minecraft/item/crimson_hyphae.json | 9 +- .../data/minecraft/item/crimson_nylium.json | 9 +- .../data/minecraft/item/crimson_planks.json | 9 +- .../item/crimson_pressure_plate.json | 9 +- .../data/minecraft/item/crimson_roots.json | 9 +- .../data/minecraft/item/crimson_sign.json | 9 +- .../data/minecraft/item/crimson_slab.json | 9 +- .../data/minecraft/item/crimson_stairs.json | 9 +- .../data/minecraft/item/crimson_stem.json | 9 +- .../data/minecraft/item/crimson_trapdoor.json | 9 +- .../data/minecraft/item/crossbow.json | 9 +- .../data/minecraft/item/crying_obsidian.json | 9 +- .../data/minecraft/item/cut_copper.json | 9 +- .../data/minecraft/item/cut_copper_slab.json | 9 +- .../minecraft/item/cut_copper_stairs.json | 9 +- .../minecraft/item/cut_red_sandstone.json | 9 +- .../item/cut_red_sandstone_slab.json | 9 +- .../data/minecraft/item/cut_sandstone.json | 9 +- .../minecraft/item/cut_sandstone_slab.json | 9 +- .../data/minecraft/item/cyan_banner.json | 9 +- .../data/minecraft/item/cyan_bed.json | 9 +- .../data/minecraft/item/cyan_candle.json | 9 +- .../data/minecraft/item/cyan_carpet.json | 19 +- .../data/minecraft/item/cyan_concrete.json | 9 +- .../minecraft/item/cyan_concrete_powder.json | 9 +- .../data/minecraft/item/cyan_dye.json | 9 +- .../item/cyan_glazed_terracotta.json | 9 +- .../data/minecraft/item/cyan_shulker_box.json | 9 +- .../minecraft/item/cyan_stained_glass.json | 9 +- .../item/cyan_stained_glass_pane.json | 9 +- .../data/minecraft/item/cyan_terracotta.json | 9 +- .../data/minecraft/item/cyan_wool.json | 9 +- .../data/minecraft/item/damaged_anvil.json | 9 +- .../data/minecraft/item/dandelion.json | 9 +- .../minecraft/item/danger_pottery_sherd.json | 11 +- .../data/minecraft/item/dark_oak_boat.json | 9 +- .../data/minecraft/item/dark_oak_button.json | 9 +- .../minecraft/item/dark_oak_chest_boat.json | 9 +- .../data/minecraft/item/dark_oak_door.json | 9 +- .../data/minecraft/item/dark_oak_fence.json | 9 +- .../minecraft/item/dark_oak_fence_gate.json | 9 +- .../minecraft/item/dark_oak_hanging_sign.json | 9 +- .../data/minecraft/item/dark_oak_leaves.json | 9 +- .../data/minecraft/item/dark_oak_log.json | 9 +- .../data/minecraft/item/dark_oak_planks.json | 9 +- .../item/dark_oak_pressure_plate.json | 9 +- .../data/minecraft/item/dark_oak_sapling.json | 9 +- .../data/minecraft/item/dark_oak_sign.json | 9 +- .../data/minecraft/item/dark_oak_slab.json | 9 +- .../data/minecraft/item/dark_oak_stairs.json | 9 +- .../minecraft/item/dark_oak_trapdoor.json | 9 +- .../data/minecraft/item/dark_oak_wood.json | 9 +- .../data/minecraft/item/dark_prismarine.json | 9 +- .../minecraft/item/dark_prismarine_slab.json | 9 +- .../item/dark_prismarine_stairs.json | 9 +- .../minecraft/item/daylight_detector.json | 9 +- .../data/minecraft/item/dead_brain_coral.json | 9 +- .../item/dead_brain_coral_block.json | 9 +- .../minecraft/item/dead_brain_coral_fan.json | 9 +- .../minecraft/item/dead_bubble_coral.json | 9 +- .../item/dead_bubble_coral_block.json | 9 +- .../minecraft/item/dead_bubble_coral_fan.json | 9 +- .../data/minecraft/item/dead_bush.json | 9 +- .../data/minecraft/item/dead_fire_coral.json | 9 +- .../minecraft/item/dead_fire_coral_block.json | 9 +- .../minecraft/item/dead_fire_coral_fan.json | 9 +- .../data/minecraft/item/dead_horn_coral.json | 9 +- .../minecraft/item/dead_horn_coral_block.json | 9 +- .../minecraft/item/dead_horn_coral_fan.json | 9 +- .../data/minecraft/item/dead_tube_coral.json | 9 +- .../minecraft/item/dead_tube_coral_block.json | 9 +- .../minecraft/item/dead_tube_coral_fan.json | 9 +- .../data/minecraft/item/debug_stick.json | 11 +- .../data/minecraft/item/decorated_pot.json | 9 +- .../data/minecraft/item/deepslate.json | 9 +- .../minecraft/item/deepslate_brick_slab.json | 9 +- .../item/deepslate_brick_stairs.json | 9 +- .../minecraft/item/deepslate_brick_wall.json | 9 +- .../data/minecraft/item/deepslate_bricks.json | 9 +- .../minecraft/item/deepslate_coal_ore.json | 9 +- .../minecraft/item/deepslate_copper_ore.json | 9 +- .../minecraft/item/deepslate_diamond_ore.json | 9 +- .../minecraft/item/deepslate_emerald_ore.json | 9 +- .../minecraft/item/deepslate_gold_ore.json | 9 +- .../minecraft/item/deepslate_iron_ore.json | 9 +- .../minecraft/item/deepslate_lapis_ore.json | 9 +- .../item/deepslate_redstone_ore.json | 9 +- .../minecraft/item/deepslate_tile_slab.json | 9 +- .../minecraft/item/deepslate_tile_stairs.json | 9 +- .../minecraft/item/deepslate_tile_wall.json | 9 +- .../data/minecraft/item/deepslate_tiles.json | 9 +- .../data/minecraft/item/detector_rail.json | 9 +- .../data/minecraft/item/diamond.json | 9 +- .../data/minecraft/item/diamond_axe.json | 9 +- .../data/minecraft/item/diamond_block.json | 9 +- .../data/minecraft/item/diamond_boots.json | 15 +- .../minecraft/item/diamond_chestplate.json | 15 +- .../data/minecraft/item/diamond_helmet.json | 15 +- .../data/minecraft/item/diamond_hoe.json | 9 +- .../minecraft/item/diamond_horse_armor.json | 24 +- .../data/minecraft/item/diamond_leggings.json | 15 +- .../data/minecraft/item/diamond_ore.json | 9 +- .../data/minecraft/item/diamond_pickaxe.json | 9 +- .../data/minecraft/item/diamond_shovel.json | 9 +- .../data/minecraft/item/diamond_sword.json | 9 +- .../data/minecraft/item/diorite.json | 9 +- .../data/minecraft/item/diorite_slab.json | 9 +- .../data/minecraft/item/diorite_stairs.json | 9 +- .../data/minecraft/item/diorite_wall.json | 9 +- .../generated/data/minecraft/item/dirt.json | 9 +- .../data/minecraft/item/dirt_path.json | 9 +- .../data/minecraft/item/disc_fragment_5.json | 9 +- .../data/minecraft/item/dispenser.json | 9 +- .../minecraft/item/dolphin_spawn_egg.json | 9 +- .../data/minecraft/item/donkey_spawn_egg.json | 9 +- .../data/minecraft/item/dragon_breath.json | 9 +- .../data/minecraft/item/dragon_egg.json | 11 +- .../data/minecraft/item/dragon_head.json | 12 +- .../data/minecraft/item/dried_kelp.json | 9 +- .../data/minecraft/item/dried_kelp_block.json | 9 +- .../data/minecraft/item/dripstone_block.json | 9 +- .../data/minecraft/item/dropper.json | 9 +- .../minecraft/item/drowned_spawn_egg.json | 9 +- .../dune_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/echo_shard.json | 9 +- .../generated/data/minecraft/item/egg.json | 9 +- .../item/elder_guardian_spawn_egg.json | 9 +- .../generated/data/minecraft/item/elytra.json | 23 +- .../data/minecraft/item/emerald.json | 9 +- .../data/minecraft/item/emerald_block.json | 9 +- .../data/minecraft/item/emerald_ore.json | 9 +- .../data/minecraft/item/enchanted_book.json | 13 +- .../item/enchanted_golden_apple.json | 13 +- .../data/minecraft/item/enchanting_table.json | 9 +- .../data/minecraft/item/end_crystal.json | 11 +- .../data/minecraft/item/end_portal_frame.json | 9 +- .../data/minecraft/item/end_rod.json | 9 +- .../data/minecraft/item/end_stone.json | 9 +- .../minecraft/item/end_stone_brick_slab.json | 9 +- .../item/end_stone_brick_stairs.json | 9 +- .../minecraft/item/end_stone_brick_wall.json | 9 +- .../data/minecraft/item/end_stone_bricks.json | 9 +- .../data/minecraft/item/ender_chest.json | 9 +- .../item/ender_dragon_spawn_egg.json | 9 +- .../data/minecraft/item/ender_eye.json | 9 +- .../data/minecraft/item/ender_pearl.json | 9 +- .../minecraft/item/enderman_spawn_egg.json | 9 +- .../minecraft/item/endermite_spawn_egg.json | 9 +- .../data/minecraft/item/evoker_spawn_egg.json | 9 +- .../minecraft/item/experience_bottle.json | 13 +- .../item/explorer_pottery_sherd.json | 11 +- .../item/exposed_chiseled_copper.json | 9 +- .../data/minecraft/item/exposed_copper.json | 9 +- .../minecraft/item/exposed_copper_bulb.json | 9 +- .../minecraft/item/exposed_copper_door.json | 9 +- .../minecraft/item/exposed_copper_grate.json | 9 +- .../item/exposed_copper_trapdoor.json | 9 +- .../minecraft/item/exposed_cut_copper.json | 9 +- .../item/exposed_cut_copper_slab.json | 9 +- .../item/exposed_cut_copper_stairs.json | 9 +- .../eye_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/farmland.json | 9 +- .../data/minecraft/item/feather.json | 9 +- .../minecraft/item/fermented_spider_eye.json | 9 +- .../generated/data/minecraft/item/fern.json | 9 +- .../item/field_masoned_banner_pattern.json | 11 +- .../data/minecraft/item/filled_map.json | 9 +- .../data/minecraft/item/fire_charge.json | 9 +- .../data/minecraft/item/fire_coral.json | 9 +- .../data/minecraft/item/fire_coral_block.json | 9 +- .../data/minecraft/item/fire_coral_fan.json | 9 +- .../data/minecraft/item/firework_rocket.json | 9 +- .../data/minecraft/item/firework_star.json | 9 +- .../data/minecraft/item/fishing_rod.json | 9 +- .../data/minecraft/item/fletching_table.json | 9 +- .../generated/data/minecraft/item/flint.json | 9 +- .../data/minecraft/item/flint_and_steel.json | 9 +- .../flow_armor_trim_smithing_template.json | 11 +- .../minecraft/item/flow_banner_pattern.json | 11 +- .../minecraft/item/flow_pottery_sherd.json | 11 +- .../minecraft/item/flower_banner_pattern.json | 9 +- .../data/minecraft/item/flower_pot.json | 9 +- .../data/minecraft/item/flowering_azalea.json | 9 +- .../item/flowering_azalea_leaves.json | 9 +- .../data/minecraft/item/fox_spawn_egg.json | 9 +- .../minecraft/item/friend_pottery_sherd.json | 11 +- .../data/minecraft/item/frog_spawn_egg.json | 9 +- .../data/minecraft/item/frogspawn.json | 9 +- .../data/minecraft/item/furnace.json | 9 +- .../data/minecraft/item/furnace_minecart.json | 9 +- .../data/minecraft/item/ghast_spawn_egg.json | 9 +- .../data/minecraft/item/ghast_tear.json | 9 +- .../minecraft/item/gilded_blackstone.json | 9 +- .../generated/data/minecraft/item/glass.json | 9 +- .../data/minecraft/item/glass_bottle.json | 9 +- .../data/minecraft/item/glass_pane.json | 9 +- .../item/glistering_melon_slice.json | 9 +- .../minecraft/item/globe_banner_pattern.json | 9 +- .../data/minecraft/item/glow_berries.json | 9 +- .../data/minecraft/item/glow_ink_sac.json | 9 +- .../data/minecraft/item/glow_item_frame.json | 9 +- .../data/minecraft/item/glow_lichen.json | 9 +- .../minecraft/item/glow_squid_spawn_egg.json | 9 +- .../data/minecraft/item/glowstone.json | 9 +- .../data/minecraft/item/glowstone_dust.json | 9 +- .../data/minecraft/item/goat_horn.json | 11 +- .../data/minecraft/item/goat_spawn_egg.json | 9 +- .../data/minecraft/item/gold_block.json | 9 +- .../data/minecraft/item/gold_ingot.json | 9 +- .../data/minecraft/item/gold_nugget.json | 9 +- .../data/minecraft/item/gold_ore.json | 9 +- .../data/minecraft/item/golden_apple.json | 9 +- .../data/minecraft/item/golden_axe.json | 9 +- .../data/minecraft/item/golden_boots.json | 17 +- .../data/minecraft/item/golden_carrot.json | 9 +- .../minecraft/item/golden_chestplate.json | 17 +- .../data/minecraft/item/golden_helmet.json | 17 +- .../data/minecraft/item/golden_hoe.json | 9 +- .../minecraft/item/golden_horse_armor.json | 24 +- .../data/minecraft/item/golden_leggings.json | 17 +- .../data/minecraft/item/golden_pickaxe.json | 9 +- .../data/minecraft/item/golden_shovel.json | 9 +- .../data/minecraft/item/golden_sword.json | 9 +- .../data/minecraft/item/granite.json | 9 +- .../data/minecraft/item/granite_slab.json | 9 +- .../data/minecraft/item/granite_stairs.json | 9 +- .../data/minecraft/item/granite_wall.json | 9 +- .../data/minecraft/item/grass_block.json | 9 +- .../generated/data/minecraft/item/gravel.json | 9 +- .../data/minecraft/item/gray_banner.json | 9 +- .../data/minecraft/item/gray_bed.json | 9 +- .../data/minecraft/item/gray_candle.json | 9 +- .../data/minecraft/item/gray_carpet.json | 19 +- .../data/minecraft/item/gray_concrete.json | 9 +- .../minecraft/item/gray_concrete_powder.json | 9 +- .../data/minecraft/item/gray_dye.json | 9 +- .../item/gray_glazed_terracotta.json | 9 +- .../data/minecraft/item/gray_shulker_box.json | 9 +- .../minecraft/item/gray_stained_glass.json | 9 +- .../item/gray_stained_glass_pane.json | 9 +- .../data/minecraft/item/gray_terracotta.json | 9 +- .../data/minecraft/item/gray_wool.json | 9 +- .../data/minecraft/item/green_banner.json | 9 +- .../data/minecraft/item/green_bed.json | 9 +- .../data/minecraft/item/green_candle.json | 9 +- .../data/minecraft/item/green_carpet.json | 19 +- .../data/minecraft/item/green_concrete.json | 9 +- .../minecraft/item/green_concrete_powder.json | 9 +- .../data/minecraft/item/green_dye.json | 9 +- .../item/green_glazed_terracotta.json | 9 +- .../minecraft/item/green_shulker_box.json | 9 +- .../minecraft/item/green_stained_glass.json | 9 +- .../item/green_stained_glass_pane.json | 9 +- .../data/minecraft/item/green_terracotta.json | 9 +- .../data/minecraft/item/green_wool.json | 9 +- .../data/minecraft/item/grindstone.json | 9 +- .../minecraft/item/guardian_spawn_egg.json | 9 +- .../data/minecraft/item/gunpowder.json | 9 +- .../minecraft/item/guster_banner_pattern.json | 11 +- .../minecraft/item/guster_pottery_sherd.json | 11 +- .../data/minecraft/item/hanging_roots.json | 9 +- .../data/minecraft/item/hay_block.json | 9 +- .../data/minecraft/item/heart_of_the_sea.json | 9 +- .../minecraft/item/heart_pottery_sherd.json | 11 +- .../item/heartbreak_pottery_sherd.json | 11 +- .../data/minecraft/item/heavy_core.json | 11 +- .../item/heavy_weighted_pressure_plate.json | 9 +- .../data/minecraft/item/hoglin_spawn_egg.json | 9 +- .../data/minecraft/item/honey_block.json | 9 +- .../data/minecraft/item/honey_bottle.json | 9 +- .../data/minecraft/item/honeycomb.json | 9 +- .../data/minecraft/item/honeycomb_block.json | 9 +- .../generated/data/minecraft/item/hopper.json | 9 +- .../data/minecraft/item/hopper_minecart.json | 9 +- .../data/minecraft/item/horn_coral.json | 9 +- .../data/minecraft/item/horn_coral_block.json | 9 +- .../data/minecraft/item/horn_coral_fan.json | 9 +- .../data/minecraft/item/horse_spawn_egg.json | 9 +- .../host_armor_trim_smithing_template.json | 11 +- .../minecraft/item/howl_pottery_sherd.json | 11 +- .../data/minecraft/item/husk_spawn_egg.json | 9 +- .../generated/data/minecraft/item/ice.json | 9 +- .../item/infested_chiseled_stone_bricks.json | 9 +- .../minecraft/item/infested_cobblestone.json | 9 +- .../item/infested_cracked_stone_bricks.json | 9 +- .../minecraft/item/infested_deepslate.json | 9 +- .../item/infested_mossy_stone_bricks.json | 9 +- .../data/minecraft/item/infested_stone.json | 9 +- .../minecraft/item/infested_stone_bricks.json | 9 +- .../data/minecraft/item/ink_sac.json | 9 +- .../data/minecraft/item/iron_axe.json | 9 +- .../data/minecraft/item/iron_bars.json | 9 +- .../data/minecraft/item/iron_block.json | 9 +- .../data/minecraft/item/iron_boots.json | 15 +- .../data/minecraft/item/iron_chestplate.json | 15 +- .../data/minecraft/item/iron_door.json | 9 +- .../minecraft/item/iron_golem_spawn_egg.json | 9 +- .../data/minecraft/item/iron_helmet.json | 15 +- .../data/minecraft/item/iron_hoe.json | 9 +- .../data/minecraft/item/iron_horse_armor.json | 24 +- .../data/minecraft/item/iron_ingot.json | 9 +- .../data/minecraft/item/iron_leggings.json | 15 +- .../data/minecraft/item/iron_nugget.json | 9 +- .../data/minecraft/item/iron_ore.json | 9 +- .../data/minecraft/item/iron_pickaxe.json | 9 +- .../data/minecraft/item/iron_shovel.json | 9 +- .../data/minecraft/item/iron_sword.json | 9 +- .../data/minecraft/item/iron_trapdoor.json | 9 +- .../data/minecraft/item/item_frame.json | 9 +- .../data/minecraft/item/jack_o_lantern.json | 9 +- .../generated/data/minecraft/item/jigsaw.json | 11 +- .../data/minecraft/item/jukebox.json | 9 +- .../data/minecraft/item/jungle_boat.json | 9 +- .../data/minecraft/item/jungle_button.json | 9 +- .../minecraft/item/jungle_chest_boat.json | 9 +- .../data/minecraft/item/jungle_door.json | 9 +- .../data/minecraft/item/jungle_fence.json | 9 +- .../minecraft/item/jungle_fence_gate.json | 9 +- .../minecraft/item/jungle_hanging_sign.json | 9 +- .../data/minecraft/item/jungle_leaves.json | 9 +- .../data/minecraft/item/jungle_log.json | 9 +- .../data/minecraft/item/jungle_planks.json | 9 +- .../minecraft/item/jungle_pressure_plate.json | 9 +- .../data/minecraft/item/jungle_sapling.json | 9 +- .../data/minecraft/item/jungle_sign.json | 9 +- .../data/minecraft/item/jungle_slab.json | 9 +- .../data/minecraft/item/jungle_stairs.json | 9 +- .../data/minecraft/item/jungle_trapdoor.json | 9 +- .../data/minecraft/item/jungle_wood.json | 9 +- .../generated/data/minecraft/item/kelp.json | 9 +- .../data/minecraft/item/knowledge_book.json | 11 +- .../generated/data/minecraft/item/ladder.json | 9 +- .../data/minecraft/item/lantern.json | 9 +- .../data/minecraft/item/lapis_block.json | 9 +- .../data/minecraft/item/lapis_lazuli.json | 9 +- .../data/minecraft/item/lapis_ore.json | 9 +- .../minecraft/item/large_amethyst_bud.json | 9 +- .../data/minecraft/item/large_fern.json | 9 +- .../data/minecraft/item/lava_bucket.json | 9 +- .../generated/data/minecraft/item/lead.json | 9 +- .../data/minecraft/item/leather.json | 9 +- .../data/minecraft/item/leather_boots.json | 15 +- .../minecraft/item/leather_chestplate.json | 15 +- .../data/minecraft/item/leather_helmet.json | 15 +- .../minecraft/item/leather_horse_armor.json | 24 +- .../data/minecraft/item/leather_leggings.json | 15 +- .../data/minecraft/item/lectern.json | 9 +- .../generated/data/minecraft/item/lever.json | 9 +- .../generated/data/minecraft/item/light.json | 11 +- .../minecraft/item/light_blue_banner.json | 9 +- .../data/minecraft/item/light_blue_bed.json | 9 +- .../minecraft/item/light_blue_candle.json | 9 +- .../minecraft/item/light_blue_carpet.json | 19 +- .../minecraft/item/light_blue_concrete.json | 9 +- .../item/light_blue_concrete_powder.json | 9 +- .../data/minecraft/item/light_blue_dye.json | 9 +- .../item/light_blue_glazed_terracotta.json | 9 +- .../item/light_blue_shulker_box.json | 9 +- .../item/light_blue_stained_glass.json | 9 +- .../item/light_blue_stained_glass_pane.json | 9 +- .../minecraft/item/light_blue_terracotta.json | 9 +- .../data/minecraft/item/light_blue_wool.json | 9 +- .../minecraft/item/light_gray_banner.json | 9 +- .../data/minecraft/item/light_gray_bed.json | 9 +- .../minecraft/item/light_gray_candle.json | 9 +- .../minecraft/item/light_gray_carpet.json | 19 +- .../minecraft/item/light_gray_concrete.json | 9 +- .../item/light_gray_concrete_powder.json | 9 +- .../data/minecraft/item/light_gray_dye.json | 9 +- .../item/light_gray_glazed_terracotta.json | 9 +- .../item/light_gray_shulker_box.json | 9 +- .../item/light_gray_stained_glass.json | 9 +- .../item/light_gray_stained_glass_pane.json | 9 +- .../minecraft/item/light_gray_terracotta.json | 9 +- .../data/minecraft/item/light_gray_wool.json | 9 +- .../item/light_weighted_pressure_plate.json | 9 +- .../data/minecraft/item/lightning_rod.json | 9 +- .../generated/data/minecraft/item/lilac.json | 9 +- .../minecraft/item/lily_of_the_valley.json | 9 +- .../data/minecraft/item/lily_pad.json | 9 +- .../data/minecraft/item/lime_banner.json | 9 +- .../data/minecraft/item/lime_bed.json | 9 +- .../data/minecraft/item/lime_candle.json | 9 +- .../data/minecraft/item/lime_carpet.json | 19 +- .../data/minecraft/item/lime_concrete.json | 9 +- .../minecraft/item/lime_concrete_powder.json | 9 +- .../data/minecraft/item/lime_dye.json | 9 +- .../item/lime_glazed_terracotta.json | 9 +- .../data/minecraft/item/lime_shulker_box.json | 9 +- .../minecraft/item/lime_stained_glass.json | 9 +- .../item/lime_stained_glass_pane.json | 9 +- .../data/minecraft/item/lime_terracotta.json | 9 +- .../data/minecraft/item/lime_wool.json | 9 +- .../data/minecraft/item/lingering_potion.json | 9 +- .../data/minecraft/item/llama_spawn_egg.json | 9 +- .../data/minecraft/item/lodestone.json | 9 +- .../generated/data/minecraft/item/loom.json | 9 +- .../generated/data/minecraft/item/mace.json | 11 +- .../data/minecraft/item/magenta_banner.json | 9 +- .../data/minecraft/item/magenta_bed.json | 9 +- .../data/minecraft/item/magenta_candle.json | 9 +- .../data/minecraft/item/magenta_carpet.json | 19 +- .../data/minecraft/item/magenta_concrete.json | 9 +- .../item/magenta_concrete_powder.json | 9 +- .../data/minecraft/item/magenta_dye.json | 9 +- .../item/magenta_glazed_terracotta.json | 9 +- .../minecraft/item/magenta_shulker_box.json | 9 +- .../minecraft/item/magenta_stained_glass.json | 9 +- .../item/magenta_stained_glass_pane.json | 9 +- .../minecraft/item/magenta_terracotta.json | 9 +- .../data/minecraft/item/magenta_wool.json | 9 +- .../data/minecraft/item/magma_block.json | 9 +- .../data/minecraft/item/magma_cream.json | 9 +- .../minecraft/item/magma_cube_spawn_egg.json | 9 +- .../data/minecraft/item/mangrove_boat.json | 9 +- .../data/minecraft/item/mangrove_button.json | 9 +- .../minecraft/item/mangrove_chest_boat.json | 9 +- .../data/minecraft/item/mangrove_door.json | 9 +- .../data/minecraft/item/mangrove_fence.json | 9 +- .../minecraft/item/mangrove_fence_gate.json | 9 +- .../minecraft/item/mangrove_hanging_sign.json | 9 +- .../data/minecraft/item/mangrove_leaves.json | 9 +- .../data/minecraft/item/mangrove_log.json | 9 +- .../data/minecraft/item/mangrove_planks.json | 9 +- .../item/mangrove_pressure_plate.json | 9 +- .../minecraft/item/mangrove_propagule.json | 9 +- .../data/minecraft/item/mangrove_roots.json | 9 +- .../data/minecraft/item/mangrove_sign.json | 9 +- .../data/minecraft/item/mangrove_slab.json | 9 +- .../data/minecraft/item/mangrove_stairs.json | 9 +- .../minecraft/item/mangrove_trapdoor.json | 9 +- .../data/minecraft/item/mangrove_wood.json | 9 +- .../generated/data/minecraft/item/map.json | 9 +- .../minecraft/item/medium_amethyst_bud.json | 9 +- .../generated/data/minecraft/item/melon.json | 9 +- .../data/minecraft/item/melon_seeds.json | 9 +- .../data/minecraft/item/melon_slice.json | 9 +- .../data/minecraft/item/milk_bucket.json | 9 +- .../data/minecraft/item/minecart.json | 9 +- .../minecraft/item/miner_pottery_sherd.json | 11 +- .../minecraft/item/mojang_banner_pattern.json | 11 +- .../minecraft/item/mooshroom_spawn_egg.json | 9 +- .../data/minecraft/item/moss_block.json | 9 +- .../data/minecraft/item/moss_carpet.json | 9 +- .../minecraft/item/mossy_cobblestone.json | 9 +- .../item/mossy_cobblestone_slab.json | 9 +- .../item/mossy_cobblestone_stairs.json | 9 +- .../item/mossy_cobblestone_wall.json | 9 +- .../item/mossy_stone_brick_slab.json | 9 +- .../item/mossy_stone_brick_stairs.json | 9 +- .../item/mossy_stone_brick_wall.json | 9 +- .../minecraft/item/mossy_stone_bricks.json | 9 +- .../minecraft/item/mourner_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/mud.json | 9 +- .../data/minecraft/item/mud_brick_slab.json | 9 +- .../data/minecraft/item/mud_brick_stairs.json | 9 +- .../data/minecraft/item/mud_brick_wall.json | 9 +- .../data/minecraft/item/mud_bricks.json | 9 +- .../minecraft/item/muddy_mangrove_roots.json | 9 +- .../data/minecraft/item/mule_spawn_egg.json | 9 +- .../data/minecraft/item/mushroom_stem.json | 9 +- .../data/minecraft/item/mushroom_stew.json | 9 +- .../data/minecraft/item/music_disc_11.json | 11 +- .../data/minecraft/item/music_disc_13.json | 11 +- .../data/minecraft/item/music_disc_5.json | 11 +- .../minecraft/item/music_disc_blocks.json | 11 +- .../data/minecraft/item/music_disc_cat.json | 11 +- .../data/minecraft/item/music_disc_chirp.json | 11 +- .../minecraft/item/music_disc_creator.json | 11 +- .../item/music_disc_creator_music_box.json | 11 +- .../data/minecraft/item/music_disc_far.json | 11 +- .../data/minecraft/item/music_disc_mall.json | 11 +- .../minecraft/item/music_disc_mellohi.json | 11 +- .../minecraft/item/music_disc_otherside.json | 11 +- .../minecraft/item/music_disc_pigstep.json | 11 +- .../minecraft/item/music_disc_precipice.json | 11 +- .../data/minecraft/item/music_disc_relic.json | 11 +- .../data/minecraft/item/music_disc_stal.json | 11 +- .../data/minecraft/item/music_disc_strad.json | 11 +- .../data/minecraft/item/music_disc_wait.json | 11 +- .../data/minecraft/item/music_disc_ward.json | 11 +- .../generated/data/minecraft/item/mutton.json | 9 +- .../data/minecraft/item/mycelium.json | 9 +- .../data/minecraft/item/name_tag.json | 9 +- .../data/minecraft/item/nautilus_shell.json | 9 +- .../data/minecraft/item/nether_brick.json | 9 +- .../minecraft/item/nether_brick_fence.json | 9 +- .../minecraft/item/nether_brick_slab.json | 9 +- .../minecraft/item/nether_brick_stairs.json | 9 +- .../minecraft/item/nether_brick_wall.json | 9 +- .../data/minecraft/item/nether_bricks.json | 9 +- .../data/minecraft/item/nether_gold_ore.json | 9 +- .../minecraft/item/nether_quartz_ore.json | 9 +- .../data/minecraft/item/nether_sprouts.json | 9 +- .../data/minecraft/item/nether_star.json | 13 +- .../data/minecraft/item/nether_wart.json | 9 +- .../minecraft/item/nether_wart_block.json | 9 +- .../data/minecraft/item/netherite_axe.json | 9 +- .../data/minecraft/item/netherite_block.json | 9 +- .../data/minecraft/item/netherite_boots.json | 15 +- .../minecraft/item/netherite_chestplate.json | 15 +- .../data/minecraft/item/netherite_helmet.json | 15 +- .../data/minecraft/item/netherite_hoe.json | 9 +- .../data/minecraft/item/netherite_ingot.json | 9 +- .../minecraft/item/netherite_leggings.json | 15 +- .../minecraft/item/netherite_pickaxe.json | 9 +- .../data/minecraft/item/netherite_scrap.json | 9 +- .../data/minecraft/item/netherite_shovel.json | 9 +- .../data/minecraft/item/netherite_sword.json | 9 +- .../netherite_upgrade_smithing_template.json | 11 +- .../data/minecraft/item/netherrack.json | 9 +- .../data/minecraft/item/note_block.json | 9 +- .../data/minecraft/item/oak_boat.json | 9 +- .../data/minecraft/item/oak_button.json | 9 +- .../data/minecraft/item/oak_chest_boat.json | 9 +- .../data/minecraft/item/oak_door.json | 9 +- .../data/minecraft/item/oak_fence.json | 9 +- .../data/minecraft/item/oak_fence_gate.json | 9 +- .../data/minecraft/item/oak_hanging_sign.json | 9 +- .../data/minecraft/item/oak_leaves.json | 9 +- .../data/minecraft/item/oak_log.json | 9 +- .../data/minecraft/item/oak_planks.json | 9 +- .../minecraft/item/oak_pressure_plate.json | 9 +- .../data/minecraft/item/oak_sapling.json | 9 +- .../data/minecraft/item/oak_sign.json | 9 +- .../data/minecraft/item/oak_slab.json | 9 +- .../data/minecraft/item/oak_stairs.json | 9 +- .../data/minecraft/item/oak_trapdoor.json | 9 +- .../data/minecraft/item/oak_wood.json | 9 +- .../data/minecraft/item/observer.json | 9 +- .../data/minecraft/item/obsidian.json | 9 +- .../data/minecraft/item/ocelot_spawn_egg.json | 9 +- .../data/minecraft/item/ochre_froglight.json | 9 +- .../data/minecraft/item/ominous_bottle.json | 11 +- .../minecraft/item/ominous_trial_key.json | 9 +- .../data/minecraft/item/orange_banner.json | 9 +- .../data/minecraft/item/orange_bed.json | 9 +- .../data/minecraft/item/orange_candle.json | 9 +- .../data/minecraft/item/orange_carpet.json | 19 +- .../data/minecraft/item/orange_concrete.json | 9 +- .../item/orange_concrete_powder.json | 9 +- .../data/minecraft/item/orange_dye.json | 9 +- .../item/orange_glazed_terracotta.json | 9 +- .../minecraft/item/orange_shulker_box.json | 9 +- .../minecraft/item/orange_stained_glass.json | 9 +- .../item/orange_stained_glass_pane.json | 9 +- .../minecraft/item/orange_terracotta.json | 9 +- .../data/minecraft/item/orange_tulip.json | 9 +- .../data/minecraft/item/orange_wool.json | 9 +- .../data/minecraft/item/oxeye_daisy.json | 9 +- .../item/oxidized_chiseled_copper.json | 9 +- .../data/minecraft/item/oxidized_copper.json | 9 +- .../minecraft/item/oxidized_copper_bulb.json | 9 +- .../minecraft/item/oxidized_copper_door.json | 9 +- .../minecraft/item/oxidized_copper_grate.json | 9 +- .../item/oxidized_copper_trapdoor.json | 9 +- .../minecraft/item/oxidized_cut_copper.json | 9 +- .../item/oxidized_cut_copper_slab.json | 9 +- .../item/oxidized_cut_copper_stairs.json | 9 +- .../data/minecraft/item/packed_ice.json | 9 +- .../data/minecraft/item/packed_mud.json | 9 +- .../data/minecraft/item/painting.json | 9 +- .../data/minecraft/item/panda_spawn_egg.json | 9 +- .../generated/data/minecraft/item/paper.json | 9 +- .../data/minecraft/item/parrot_spawn_egg.json | 9 +- .../minecraft/item/pearlescent_froglight.json | 9 +- .../generated/data/minecraft/item/peony.json | 9 +- .../minecraft/item/petrified_oak_slab.json | 9 +- .../data/minecraft/item/phantom_membrane.json | 9 +- .../minecraft/item/phantom_spawn_egg.json | 9 +- .../data/minecraft/item/pig_spawn_egg.json | 9 +- .../minecraft/item/piglin_banner_pattern.json | 11 +- .../item/piglin_brute_spawn_egg.json | 9 +- .../data/minecraft/item/piglin_head.json | 12 +- .../data/minecraft/item/piglin_spawn_egg.json | 9 +- .../minecraft/item/pillager_spawn_egg.json | 9 +- .../data/minecraft/item/pink_banner.json | 9 +- .../data/minecraft/item/pink_bed.json | 9 +- .../data/minecraft/item/pink_candle.json | 9 +- .../data/minecraft/item/pink_carpet.json | 19 +- .../data/minecraft/item/pink_concrete.json | 9 +- .../minecraft/item/pink_concrete_powder.json | 9 +- .../data/minecraft/item/pink_dye.json | 9 +- .../item/pink_glazed_terracotta.json | 9 +- .../data/minecraft/item/pink_petals.json | 9 +- .../data/minecraft/item/pink_shulker_box.json | 9 +- .../minecraft/item/pink_stained_glass.json | 9 +- .../item/pink_stained_glass_pane.json | 9 +- .../data/minecraft/item/pink_terracotta.json | 9 +- .../data/minecraft/item/pink_tulip.json | 9 +- .../data/minecraft/item/pink_wool.json | 9 +- .../generated/data/minecraft/item/piston.json | 9 +- .../data/minecraft/item/pitcher_plant.json | 9 +- .../data/minecraft/item/pitcher_pod.json | 9 +- .../data/minecraft/item/player_head.json | 12 +- .../minecraft/item/plenty_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/podzol.json | 9 +- .../minecraft/item/pointed_dripstone.json | 9 +- .../data/minecraft/item/poisonous_potato.json | 9 +- .../minecraft/item/polar_bear_spawn_egg.json | 9 +- .../minecraft/item/polished_andesite.json | 9 +- .../item/polished_andesite_slab.json | 9 +- .../item/polished_andesite_stairs.json | 9 +- .../data/minecraft/item/polished_basalt.json | 9 +- .../minecraft/item/polished_blackstone.json | 9 +- .../item/polished_blackstone_brick_slab.json | 9 +- .../polished_blackstone_brick_stairs.json | 9 +- .../item/polished_blackstone_brick_wall.json | 9 +- .../item/polished_blackstone_bricks.json | 9 +- .../item/polished_blackstone_button.json | 9 +- .../polished_blackstone_pressure_plate.json | 9 +- .../item/polished_blackstone_slab.json | 9 +- .../item/polished_blackstone_stairs.json | 9 +- .../item/polished_blackstone_wall.json | 9 +- .../minecraft/item/polished_deepslate.json | 9 +- .../item/polished_deepslate_slab.json | 9 +- .../item/polished_deepslate_stairs.json | 9 +- .../item/polished_deepslate_wall.json | 9 +- .../data/minecraft/item/polished_diorite.json | 9 +- .../minecraft/item/polished_diorite_slab.json | 9 +- .../item/polished_diorite_stairs.json | 9 +- .../data/minecraft/item/polished_granite.json | 9 +- .../minecraft/item/polished_granite_slab.json | 9 +- .../item/polished_granite_stairs.json | 9 +- .../data/minecraft/item/polished_tuff.json | 9 +- .../minecraft/item/polished_tuff_slab.json | 9 +- .../minecraft/item/polished_tuff_stairs.json | 9 +- .../minecraft/item/polished_tuff_wall.json | 9 +- .../minecraft/item/popped_chorus_fruit.json | 9 +- .../generated/data/minecraft/item/poppy.json | 9 +- .../data/minecraft/item/porkchop.json | 9 +- .../generated/data/minecraft/item/potato.json | 9 +- .../generated/data/minecraft/item/potion.json | 9 +- .../minecraft/item/powder_snow_bucket.json | 9 +- .../data/minecraft/item/powered_rail.json | 9 +- .../data/minecraft/item/prismarine.json | 9 +- .../minecraft/item/prismarine_brick_slab.json | 9 +- .../item/prismarine_brick_stairs.json | 9 +- .../minecraft/item/prismarine_bricks.json | 9 +- .../minecraft/item/prismarine_crystals.json | 9 +- .../data/minecraft/item/prismarine_shard.json | 9 +- .../data/minecraft/item/prismarine_slab.json | 9 +- .../minecraft/item/prismarine_stairs.json | 9 +- .../data/minecraft/item/prismarine_wall.json | 9 +- .../minecraft/item/prize_pottery_sherd.json | 11 +- .../data/minecraft/item/pufferfish.json | 9 +- .../minecraft/item/pufferfish_bucket.json | 9 +- .../minecraft/item/pufferfish_spawn_egg.json | 9 +- .../data/minecraft/item/pumpkin.json | 9 +- .../data/minecraft/item/pumpkin_pie.json | 9 +- .../data/minecraft/item/pumpkin_seeds.json | 9 +- .../data/minecraft/item/purple_banner.json | 9 +- .../data/minecraft/item/purple_bed.json | 9 +- .../data/minecraft/item/purple_candle.json | 9 +- .../data/minecraft/item/purple_carpet.json | 19 +- .../data/minecraft/item/purple_concrete.json | 9 +- .../item/purple_concrete_powder.json | 9 +- .../data/minecraft/item/purple_dye.json | 9 +- .../item/purple_glazed_terracotta.json | 9 +- .../minecraft/item/purple_shulker_box.json | 9 +- .../minecraft/item/purple_stained_glass.json | 9 +- .../item/purple_stained_glass_pane.json | 9 +- .../minecraft/item/purple_terracotta.json | 9 +- .../data/minecraft/item/purple_wool.json | 9 +- .../data/minecraft/item/purpur_block.json | 9 +- .../data/minecraft/item/purpur_pillar.json | 9 +- .../data/minecraft/item/purpur_slab.json | 9 +- .../data/minecraft/item/purpur_stairs.json | 9 +- .../generated/data/minecraft/item/quartz.json | 9 +- .../data/minecraft/item/quartz_block.json | 9 +- .../data/minecraft/item/quartz_bricks.json | 9 +- .../data/minecraft/item/quartz_pillar.json | 9 +- .../data/minecraft/item/quartz_slab.json | 9 +- .../data/minecraft/item/quartz_stairs.json | 9 +- .../generated/data/minecraft/item/rabbit.json | 9 +- .../data/minecraft/item/rabbit_foot.json | 9 +- .../data/minecraft/item/rabbit_hide.json | 9 +- .../data/minecraft/item/rabbit_spawn_egg.json | 9 +- .../data/minecraft/item/rabbit_stew.json | 9 +- .../generated/data/minecraft/item/rail.json | 9 +- .../raiser_armor_trim_smithing_template.json | 11 +- .../minecraft/item/ravager_spawn_egg.json | 9 +- .../data/minecraft/item/raw_copper.json | 9 +- .../data/minecraft/item/raw_copper_block.json | 9 +- .../data/minecraft/item/raw_gold.json | 9 +- .../data/minecraft/item/raw_gold_block.json | 9 +- .../data/minecraft/item/raw_iron.json | 9 +- .../data/minecraft/item/raw_iron_block.json | 9 +- .../data/minecraft/item/recovery_compass.json | 11 +- .../data/minecraft/item/red_banner.json | 9 +- .../data/minecraft/item/red_bed.json | 9 +- .../data/minecraft/item/red_candle.json | 9 +- .../data/minecraft/item/red_carpet.json | 19 +- .../data/minecraft/item/red_concrete.json | 9 +- .../minecraft/item/red_concrete_powder.json | 9 +- .../data/minecraft/item/red_dye.json | 9 +- .../minecraft/item/red_glazed_terracotta.json | 9 +- .../data/minecraft/item/red_mushroom.json | 9 +- .../minecraft/item/red_mushroom_block.json | 9 +- .../minecraft/item/red_nether_brick_slab.json | 9 +- .../item/red_nether_brick_stairs.json | 9 +- .../minecraft/item/red_nether_brick_wall.json | 9 +- .../minecraft/item/red_nether_bricks.json | 9 +- .../data/minecraft/item/red_sand.json | 9 +- .../data/minecraft/item/red_sandstone.json | 9 +- .../minecraft/item/red_sandstone_slab.json | 9 +- .../minecraft/item/red_sandstone_stairs.json | 9 +- .../minecraft/item/red_sandstone_wall.json | 9 +- .../data/minecraft/item/red_shulker_box.json | 9 +- .../minecraft/item/red_stained_glass.json | 9 +- .../item/red_stained_glass_pane.json | 9 +- .../data/minecraft/item/red_terracotta.json | 9 +- .../data/minecraft/item/red_tulip.json | 9 +- .../data/minecraft/item/red_wool.json | 9 +- .../data/minecraft/item/redstone.json | 9 +- .../data/minecraft/item/redstone_block.json | 9 +- .../data/minecraft/item/redstone_lamp.json | 9 +- .../data/minecraft/item/redstone_ore.json | 9 +- .../data/minecraft/item/redstone_torch.json | 9 +- .../minecraft/item/reinforced_deepslate.json | 9 +- .../data/minecraft/item/repeater.json | 9 +- .../item/repeating_command_block.json | 11 +- .../data/minecraft/item/respawn_anchor.json | 9 +- .../rib_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/rooted_dirt.json | 9 +- .../data/minecraft/item/rose_bush.json | 9 +- .../data/minecraft/item/rotten_flesh.json | 9 +- .../generated/data/minecraft/item/saddle.json | 9 +- .../generated/data/minecraft/item/salmon.json | 9 +- .../data/minecraft/item/salmon_bucket.json | 9 +- .../data/minecraft/item/salmon_spawn_egg.json | 9 +- .../generated/data/minecraft/item/sand.json | 9 +- .../data/minecraft/item/sandstone.json | 9 +- .../data/minecraft/item/sandstone_slab.json | 9 +- .../data/minecraft/item/sandstone_stairs.json | 9 +- .../data/minecraft/item/sandstone_wall.json | 9 +- .../data/minecraft/item/scaffolding.json | 9 +- .../minecraft/item/scrape_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/sculk.json | 9 +- .../data/minecraft/item/sculk_catalyst.json | 9 +- .../data/minecraft/item/sculk_sensor.json | 9 +- .../data/minecraft/item/sculk_shrieker.json | 9 +- .../data/minecraft/item/sculk_vein.json | 9 +- .../data/minecraft/item/sea_lantern.json | 9 +- .../data/minecraft/item/sea_pickle.json | 9 +- .../data/minecraft/item/seagrass.json | 9 +- .../sentry_armor_trim_smithing_template.json | 11 +- .../shaper_armor_trim_smithing_template.json | 11 +- .../minecraft/item/sheaf_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/shears.json | 9 +- .../data/minecraft/item/sheep_spawn_egg.json | 9 +- .../minecraft/item/shelter_pottery_sherd.json | 11 +- .../generated/data/minecraft/item/shield.json | 10 +- .../data/minecraft/item/short_grass.json | 9 +- .../data/minecraft/item/shroomlight.json | 9 +- .../data/minecraft/item/shulker_box.json | 9 +- .../data/minecraft/item/shulker_shell.json | 9 +- .../minecraft/item/shulker_spawn_egg.json | 9 +- .../silence_armor_trim_smithing_template.json | 11 +- .../minecraft/item/silverfish_spawn_egg.json | 9 +- .../item/skeleton_horse_spawn_egg.json | 9 +- .../data/minecraft/item/skeleton_skull.json | 12 +- .../minecraft/item/skeleton_spawn_egg.json | 9 +- .../minecraft/item/skull_banner_pattern.json | 11 +- .../minecraft/item/skull_pottery_sherd.json | 11 +- .../data/minecraft/item/slime_ball.json | 9 +- .../data/minecraft/item/slime_block.json | 9 +- .../data/minecraft/item/slime_spawn_egg.json | 9 +- .../minecraft/item/small_amethyst_bud.json | 9 +- .../data/minecraft/item/small_dripleaf.json | 9 +- .../data/minecraft/item/smithing_table.json | 9 +- .../generated/data/minecraft/item/smoker.json | 9 +- .../data/minecraft/item/smooth_basalt.json | 9 +- .../data/minecraft/item/smooth_quartz.json | 9 +- .../minecraft/item/smooth_quartz_slab.json | 9 +- .../minecraft/item/smooth_quartz_stairs.json | 9 +- .../minecraft/item/smooth_red_sandstone.json | 9 +- .../item/smooth_red_sandstone_slab.json | 9 +- .../item/smooth_red_sandstone_stairs.json | 9 +- .../data/minecraft/item/smooth_sandstone.json | 9 +- .../minecraft/item/smooth_sandstone_slab.json | 9 +- .../item/smooth_sandstone_stairs.json | 9 +- .../data/minecraft/item/smooth_stone.json | 9 +- .../minecraft/item/smooth_stone_slab.json | 9 +- .../data/minecraft/item/sniffer_egg.json | 11 +- .../minecraft/item/sniffer_spawn_egg.json | 9 +- .../minecraft/item/snort_pottery_sherd.json | 11 +- .../snout_armor_trim_smithing_template.json | 11 +- .../generated/data/minecraft/item/snow.json | 9 +- .../data/minecraft/item/snow_block.json | 9 +- .../minecraft/item/snow_golem_spawn_egg.json | 9 +- .../data/minecraft/item/snowball.json | 9 +- .../data/minecraft/item/soul_campfire.json | 9 +- .../data/minecraft/item/soul_lantern.json | 9 +- .../data/minecraft/item/soul_sand.json | 9 +- .../data/minecraft/item/soul_soil.json | 9 +- .../data/minecraft/item/soul_torch.json | 9 +- .../data/minecraft/item/spawner.json | 9 +- .../data/minecraft/item/spectral_arrow.json | 9 +- .../data/minecraft/item/spider_eye.json | 9 +- .../data/minecraft/item/spider_spawn_egg.json | 9 +- .../spire_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/splash_potion.json | 9 +- .../generated/data/minecraft/item/sponge.json | 9 +- .../data/minecraft/item/spore_blossom.json | 9 +- .../data/minecraft/item/spruce_boat.json | 9 +- .../data/minecraft/item/spruce_button.json | 9 +- .../minecraft/item/spruce_chest_boat.json | 9 +- .../data/minecraft/item/spruce_door.json | 9 +- .../data/minecraft/item/spruce_fence.json | 9 +- .../minecraft/item/spruce_fence_gate.json | 9 +- .../minecraft/item/spruce_hanging_sign.json | 9 +- .../data/minecraft/item/spruce_leaves.json | 9 +- .../data/minecraft/item/spruce_log.json | 9 +- .../data/minecraft/item/spruce_planks.json | 9 +- .../minecraft/item/spruce_pressure_plate.json | 9 +- .../data/minecraft/item/spruce_sapling.json | 9 +- .../data/minecraft/item/spruce_sign.json | 9 +- .../data/minecraft/item/spruce_slab.json | 9 +- .../data/minecraft/item/spruce_stairs.json | 9 +- .../data/minecraft/item/spruce_trapdoor.json | 9 +- .../data/minecraft/item/spruce_wood.json | 9 +- .../data/minecraft/item/spyglass.json | 9 +- .../data/minecraft/item/squid_spawn_egg.json | 9 +- .../generated/data/minecraft/item/stick.json | 9 +- .../data/minecraft/item/sticky_piston.json | 9 +- .../generated/data/minecraft/item/stone.json | 9 +- .../data/minecraft/item/stone_axe.json | 9 +- .../data/minecraft/item/stone_brick_slab.json | 9 +- .../minecraft/item/stone_brick_stairs.json | 9 +- .../data/minecraft/item/stone_brick_wall.json | 9 +- .../data/minecraft/item/stone_bricks.json | 9 +- .../data/minecraft/item/stone_button.json | 9 +- .../data/minecraft/item/stone_hoe.json | 9 +- .../data/minecraft/item/stone_pickaxe.json | 9 +- .../minecraft/item/stone_pressure_plate.json | 9 +- .../data/minecraft/item/stone_shovel.json | 9 +- .../data/minecraft/item/stone_slab.json | 9 +- .../data/minecraft/item/stone_stairs.json | 9 +- .../data/minecraft/item/stone_sword.json | 9 +- .../data/minecraft/item/stonecutter.json | 9 +- .../data/minecraft/item/stray_spawn_egg.json | 9 +- .../minecraft/item/strider_spawn_egg.json | 9 +- .../generated/data/minecraft/item/string.json | 9 +- .../minecraft/item/stripped_acacia_log.json | 9 +- .../minecraft/item/stripped_acacia_wood.json | 9 +- .../minecraft/item/stripped_bamboo_block.json | 9 +- .../minecraft/item/stripped_birch_log.json | 9 +- .../minecraft/item/stripped_birch_wood.json | 9 +- .../minecraft/item/stripped_cherry_log.json | 9 +- .../minecraft/item/stripped_cherry_wood.json | 9 +- .../item/stripped_crimson_hyphae.json | 9 +- .../minecraft/item/stripped_crimson_stem.json | 9 +- .../minecraft/item/stripped_dark_oak_log.json | 9 +- .../item/stripped_dark_oak_wood.json | 9 +- .../minecraft/item/stripped_jungle_log.json | 9 +- .../minecraft/item/stripped_jungle_wood.json | 9 +- .../minecraft/item/stripped_mangrove_log.json | 9 +- .../item/stripped_mangrove_wood.json | 9 +- .../data/minecraft/item/stripped_oak_log.json | 9 +- .../minecraft/item/stripped_oak_wood.json | 9 +- .../minecraft/item/stripped_spruce_log.json | 9 +- .../minecraft/item/stripped_spruce_wood.json | 9 +- .../item/stripped_warped_hyphae.json | 9 +- .../minecraft/item/stripped_warped_stem.json | 9 +- .../data/minecraft/item/structure_block.json | 11 +- .../data/minecraft/item/structure_void.json | 11 +- .../generated/data/minecraft/item/sugar.json | 9 +- .../data/minecraft/item/sugar_cane.json | 9 +- .../data/minecraft/item/sunflower.json | 9 +- .../minecraft/item/suspicious_gravel.json | 9 +- .../data/minecraft/item/suspicious_sand.json | 9 +- .../data/minecraft/item/suspicious_stew.json | 9 +- .../data/minecraft/item/sweet_berries.json | 9 +- .../data/minecraft/item/tadpole_bucket.json | 9 +- .../minecraft/item/tadpole_spawn_egg.json | 9 +- .../data/minecraft/item/tall_grass.json | 9 +- .../generated/data/minecraft/item/target.json | 9 +- .../data/minecraft/item/terracotta.json | 9 +- .../tide_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/tinted_glass.json | 9 +- .../data/minecraft/item/tipped_arrow.json | 9 +- .../generated/data/minecraft/item/tnt.json | 9 +- .../data/minecraft/item/tnt_minecart.json | 9 +- .../generated/data/minecraft/item/torch.json | 9 +- .../data/minecraft/item/torchflower.json | 9 +- .../minecraft/item/torchflower_seeds.json | 9 +- .../data/minecraft/item/totem_of_undying.json | 11 +- .../item/trader_llama_spawn_egg.json | 9 +- .../data/minecraft/item/trapped_chest.json | 9 +- .../data/minecraft/item/trial_key.json | 9 +- .../data/minecraft/item/trial_spawner.json | 9 +- .../data/minecraft/item/trident.json | 11 +- .../data/minecraft/item/tripwire_hook.json | 9 +- .../data/minecraft/item/tropical_fish.json | 9 +- .../minecraft/item/tropical_fish_bucket.json | 9 +- .../item/tropical_fish_spawn_egg.json | 9 +- .../data/minecraft/item/tube_coral.json | 9 +- .../data/minecraft/item/tube_coral_block.json | 9 +- .../data/minecraft/item/tube_coral_fan.json | 9 +- .../generated/data/minecraft/item/tuff.json | 9 +- .../data/minecraft/item/tuff_brick_slab.json | 9 +- .../minecraft/item/tuff_brick_stairs.json | 9 +- .../data/minecraft/item/tuff_brick_wall.json | 9 +- .../data/minecraft/item/tuff_bricks.json | 9 +- .../data/minecraft/item/tuff_slab.json | 9 +- .../data/minecraft/item/tuff_stairs.json | 9 +- .../data/minecraft/item/tuff_wall.json | 9 +- .../data/minecraft/item/turtle_egg.json | 9 +- .../data/minecraft/item/turtle_helmet.json | 15 +- .../data/minecraft/item/turtle_scute.json | 9 +- .../data/minecraft/item/turtle_spawn_egg.json | 9 +- .../data/minecraft/item/twisting_vines.json | 9 +- .../generated/data/minecraft/item/vault.json | 9 +- .../minecraft/item/verdant_froglight.json | 9 +- .../vex_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/vex_spawn_egg.json | 9 +- .../minecraft/item/villager_spawn_egg.json | 9 +- .../minecraft/item/vindicator_spawn_egg.json | 9 +- .../generated/data/minecraft/item/vine.json | 9 +- .../item/wandering_trader_spawn_egg.json | 9 +- .../ward_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/warden_spawn_egg.json | 9 +- .../data/minecraft/item/warped_button.json | 9 +- .../data/minecraft/item/warped_door.json | 9 +- .../data/minecraft/item/warped_fence.json | 9 +- .../minecraft/item/warped_fence_gate.json | 9 +- .../data/minecraft/item/warped_fungus.json | 9 +- .../item/warped_fungus_on_a_stick.json | 9 +- .../minecraft/item/warped_hanging_sign.json | 9 +- .../data/minecraft/item/warped_hyphae.json | 9 +- .../data/minecraft/item/warped_nylium.json | 9 +- .../data/minecraft/item/warped_planks.json | 9 +- .../minecraft/item/warped_pressure_plate.json | 9 +- .../data/minecraft/item/warped_roots.json | 9 +- .../data/minecraft/item/warped_sign.json | 9 +- .../data/minecraft/item/warped_slab.json | 9 +- .../data/minecraft/item/warped_stairs.json | 9 +- .../data/minecraft/item/warped_stem.json | 9 +- .../data/minecraft/item/warped_trapdoor.json | 9 +- .../minecraft/item/warped_wart_block.json | 9 +- .../data/minecraft/item/water_bucket.json | 9 +- .../minecraft/item/waxed_chiseled_copper.json | 9 +- .../minecraft/item/waxed_copper_block.json | 9 +- .../minecraft/item/waxed_copper_bulb.json | 9 +- .../minecraft/item/waxed_copper_door.json | 9 +- .../minecraft/item/waxed_copper_grate.json | 9 +- .../minecraft/item/waxed_copper_trapdoor.json | 9 +- .../data/minecraft/item/waxed_cut_copper.json | 9 +- .../minecraft/item/waxed_cut_copper_slab.json | 9 +- .../item/waxed_cut_copper_stairs.json | 9 +- .../item/waxed_exposed_chiseled_copper.json | 9 +- .../minecraft/item/waxed_exposed_copper.json | 9 +- .../item/waxed_exposed_copper_bulb.json | 9 +- .../item/waxed_exposed_copper_door.json | 9 +- .../item/waxed_exposed_copper_grate.json | 9 +- .../item/waxed_exposed_copper_trapdoor.json | 9 +- .../item/waxed_exposed_cut_copper.json | 9 +- .../item/waxed_exposed_cut_copper_slab.json | 9 +- .../item/waxed_exposed_cut_copper_stairs.json | 9 +- .../item/waxed_oxidized_chiseled_copper.json | 9 +- .../minecraft/item/waxed_oxidized_copper.json | 9 +- .../item/waxed_oxidized_copper_bulb.json | 9 +- .../item/waxed_oxidized_copper_door.json | 9 +- .../item/waxed_oxidized_copper_grate.json | 9 +- .../item/waxed_oxidized_copper_trapdoor.json | 9 +- .../item/waxed_oxidized_cut_copper.json | 9 +- .../item/waxed_oxidized_cut_copper_slab.json | 9 +- .../waxed_oxidized_cut_copper_stairs.json | 9 +- .../item/waxed_weathered_chiseled_copper.json | 9 +- .../item/waxed_weathered_copper.json | 9 +- .../item/waxed_weathered_copper_bulb.json | 9 +- .../item/waxed_weathered_copper_door.json | 9 +- .../item/waxed_weathered_copper_grate.json | 9 +- .../item/waxed_weathered_copper_trapdoor.json | 9 +- .../item/waxed_weathered_cut_copper.json | 9 +- .../item/waxed_weathered_cut_copper_slab.json | 9 +- .../waxed_weathered_cut_copper_stairs.json | 9 +- ...ayfinder_armor_trim_smithing_template.json | 11 +- .../item/weathered_chiseled_copper.json | 9 +- .../data/minecraft/item/weathered_copper.json | 9 +- .../minecraft/item/weathered_copper_bulb.json | 9 +- .../minecraft/item/weathered_copper_door.json | 9 +- .../item/weathered_copper_grate.json | 9 +- .../item/weathered_copper_trapdoor.json | 9 +- .../minecraft/item/weathered_cut_copper.json | 9 +- .../item/weathered_cut_copper_slab.json | 9 +- .../item/weathered_cut_copper_stairs.json | 9 +- .../data/minecraft/item/weeping_vines.json | 9 +- .../data/minecraft/item/wet_sponge.json | 9 +- .../generated/data/minecraft/item/wheat.json | 9 +- .../data/minecraft/item/wheat_seeds.json | 9 +- .../data/minecraft/item/white_banner.json | 9 +- .../data/minecraft/item/white_bed.json | 9 +- .../data/minecraft/item/white_candle.json | 9 +- .../data/minecraft/item/white_carpet.json | 19 +- .../data/minecraft/item/white_concrete.json | 9 +- .../minecraft/item/white_concrete_powder.json | 9 +- .../data/minecraft/item/white_dye.json | 9 +- .../item/white_glazed_terracotta.json | 9 +- .../minecraft/item/white_shulker_box.json | 9 +- .../minecraft/item/white_stained_glass.json | 9 +- .../item/white_stained_glass_pane.json | 9 +- .../data/minecraft/item/white_terracotta.json | 9 +- .../data/minecraft/item/white_tulip.json | 9 +- .../data/minecraft/item/white_wool.json | 9 +- .../wild_armor_trim_smithing_template.json | 11 +- .../data/minecraft/item/wind_charge.json | 9 +- .../data/minecraft/item/witch_spawn_egg.json | 9 +- .../data/minecraft/item/wither_rose.json | 9 +- .../minecraft/item/wither_skeleton_skull.json | 12 +- .../item/wither_skeleton_spawn_egg.json | 9 +- .../data/minecraft/item/wither_spawn_egg.json | 9 +- .../data/minecraft/item/wolf_armor.json | 20 +- .../data/minecraft/item/wolf_spawn_egg.json | 9 +- .../data/minecraft/item/wooden_axe.json | 9 +- .../data/minecraft/item/wooden_hoe.json | 9 +- .../data/minecraft/item/wooden_pickaxe.json | 9 +- .../data/minecraft/item/wooden_shovel.json | 9 +- .../data/minecraft/item/wooden_sword.json | 9 +- .../data/minecraft/item/writable_book.json | 9 +- .../data/minecraft/item/written_book.json | 11 +- .../data/minecraft/item/yellow_banner.json | 9 +- .../data/minecraft/item/yellow_bed.json | 9 +- .../data/minecraft/item/yellow_candle.json | 9 +- .../data/minecraft/item/yellow_carpet.json | 19 +- .../data/minecraft/item/yellow_concrete.json | 9 +- .../item/yellow_concrete_powder.json | 9 +- .../data/minecraft/item/yellow_dye.json | 9 +- .../item/yellow_glazed_terracotta.json | 9 +- .../minecraft/item/yellow_shulker_box.json | 9 +- .../minecraft/item/yellow_stained_glass.json | 9 +- .../item/yellow_stained_glass_pane.json | 9 +- .../minecraft/item/yellow_terracotta.json | 9 +- .../data/minecraft/item/yellow_wool.json | 9 +- .../data/minecraft/item/zoglin_spawn_egg.json | 9 +- .../data/minecraft/item/zombie_head.json | 12 +- .../item/zombie_horse_spawn_egg.json | 9 +- .../data/minecraft/item/zombie_spawn_egg.json | 9 +- .../item/zombie_villager_spawn_egg.json | 9 +- .../item/zombified_piglin_spawn_egg.json | 9 +- .../item/AnimalArmorItemTypeAccess.java | 17 +- .../itematic/access/item/ItemAccess.java | 14 +- .../itematic/access/item/ItemStackAccess.java | 4 +- .../component/ItematicDataComponentTypes.java | 1 + .../component/type/GliderDataComponent.java | 25 + .../itematic/entity/EquipmentSlotUtil.java | 21 - .../item/{ItemBase.java => ItemDisplay.java} | 49 +- .../errorcraft/itematic/item/ItemUtil.java | 2897 +++++++++-------- .../itematic/item/armor/ArmorMaterial.java | 85 - .../item/armor/ArmorMaterialKeys.java | 22 - .../itematic/item/armor/ArmorMaterials.java | 19 - .../item/color/colors/DyeableItemColor.java | 2 +- .../item/component/ItemComponentTypes.java | 1 + .../components/ArmorItemComponent.java | 118 +- .../components/EnchantableItemComponent.java | 5 + .../components/EquipmentItemComponent.java | 104 +- .../components/FireworkItemComponent.java | 2 +- .../components/GliderItemComponent.java | 45 + .../components/ItemHolderItemComponent.java | 39 +- .../components/PotionHolderItemComponent.java | 6 +- .../components/ShooterItemComponent.java | 2 +- .../components/SpawnEggItemComponent.java | 2 +- .../components/ThrowableItemComponent.java | 2 +- ...piciousEffectIngredientItemGroupEntry.java | 2 +- ...ncyHeldItemsWithPenaltyItemHolderRule.java | 2 +- .../overrides/AngleModelOverride.java | 4 +- .../overrides/BrokenModelOverride.java | 4 +- .../overrides/ChargedModelOverride.java | 2 +- .../overrides/DamageModelOverride.java | 2 +- .../overrides/DamagedModelOverride.java | 2 +- .../overrides/FilledModelOverride.java | 4 +- .../overrides/FireworkModelOverride.java | 2 +- .../override/overrides/PullModelOverride.java | 4 +- .../overrides/PullingModelOverride.java | 2 +- .../overrides/TootingModelOverride.java | 2 +- .../overrides/TrimTypeModelOverride.java | 5 +- .../itematic/item/placement/EntityPlacer.java | 2 +- .../smithing/template/SmithingTemplates.java | 4 +- .../TrimPatternSmithingTemplate.java | 2 +- .../providers/PlayableIntegerProvider.java | 2 +- .../providers/ShooterIntegerProvider.java | 2 +- .../providers/TridentIntegerProvider.java | 2 +- .../loot/function/DyeItemModifier.java | 2 +- .../block/ChiseledBookshelfBlockExtender.java | 2 +- .../mixin/block/ComposterBlockExtender.java | 8 +- .../mixin/block/DispenserBlockExtender.java | 2 +- .../cauldron/CauldronBehaviorExtender.java | 4 +- .../AbstractFurnaceBlockEntityExtender.java | 25 +- .../BrewingStandBlockEntityExtender.java | 2 +- .../entity/LecternBlockEntityExtender.java | 4 +- .../component/DataComponentTypesExtender.java | 24 +- .../type/DyedColorComponentExtender.java | 2 +- .../type/EquippableComponentExtender.java | 24 + .../EnchantmentHelperExtender.java | 6 +- .../mixin/entity/CrossbowUserExtender.java | 2 +- .../mixin/entity/LivingEntityExtender.java | 92 +- .../ai/brain/task/LookTargetUtilExtender.java | 2 +- .../brain/task/MeleeAttackTaskExtender.java | 2 +- .../decoration/ItemFrameEntityExtender.java | 2 +- .../entity/mob/HostileEntityExtender.java | 2 +- .../mixin/entity/mob/MobEntityExtender.java | 2 +- .../passive/AbstractHorseEntityExtender.java | 10 - .../entity/passive/HorseEntityExtender.java | 17 - .../passive/MooshroomEntityExtender.java | 4 +- .../entity/passive/PigEntityExtender.java | 2 +- .../entity/passive/SheepEntityExtender.java | 2 +- .../entity/player/PlayerEntityExtender.java | 13 +- .../player/ServerPlayerEntityExtender.java | 4 +- .../projectile/ProjectileUtilExtender.java | 2 +- .../mixin/item/AnimalArmorItemExtender.java | 43 +- .../mixin/item/ArmorMaterialsAccessor.java | 43 - .../mixin/item/BundleItemAccessor.java | 17 +- .../mixin/item/CrossbowItemExtender.java | 4 +- .../mixin/item/DebugStickItemExtender.java | 18 +- .../mixin/item/ElytraItemExtender.java | 21 - .../mixin/item/EquipmentExtender.java | 36 - .../itematic/mixin/item/ItemAccessor.java | 12 +- .../itematic/mixin/item/ItemExtender.java | 132 +- .../mixin/item/ItemStackExtender.java | 37 +- .../ContainerComponentModifiersExtender.java | 2 +- .../EnchantRandomlyLootFunctionExtender.java | 4 +- .../ExplorationMapLootFunctionExtender.java | 2 +- .../SetEnchantmentsLootFunctionExtender.java | 2 +- .../mixin/recipe/ArmorDyeRecipeExtender.java | 4 +- .../recipe/BannerDuplicateRecipeExtender.java | 2 +- .../recipe/BookCloningRecipeExtender.java | 2 +- .../recipe/BrewingRecipeRegistryExtender.java | 2 +- .../CraftingDecoratedPotRecipeExtender.java | 2 +- .../FireworkStarFadeRecipeExtender.java | 4 +- .../recipe/FireworkStarRecipeExtender.java | 8 +- .../recipe/MapExtendingRecipeExtender.java | 4 +- .../ShieldDecorationRecipeExtender.java | 4 +- .../registry/BuiltinRegistriesExtender.java | 2 - .../mixin/registry/RegistriesExtender.java | 2 +- .../registry/RegistryLoaderExtender.java | 3 - .../AbstractFurnaceScreenHandlerExtender.java | 23 + .../screen/AnvilScreenHandlerExtender.java | 2 +- .../BrewingStandScreenHandlerExtender.java | 2 +- ...CartographyTableScreenHandlerExtender.java | 4 +- .../EnchantmentScreenHandlerExtender.java | 4 +- .../GrindstoneScreenHandlerExtender.java | 4 +- .../screen/LoomScreenHandlerExtender.java | 16 +- .../ServerPlayNetworkHandlerExtender.java | 4 +- .../item/ItemPredicateExtraFields.java | 5 +- .../itematic/recipe/ItemColoringRecipe.java | 2 +- .../registry/ItematicRegistryKeys.java | 2 - .../itematic/sound/SoundEventKeys.java | 12 +- .../actions/EquipEntityAtPositionAction.java | 7 +- .../actions/PlaceBlockFromItemAction.java | 2 +- .../actions/SaddleEntityAtPositionAction.java | 2 +- .../ShootProjectileFromItemAction.java | 2 +- .../actions/SpawnEntityFromItemAction.java | 2 +- .../world/action/actions/UseBucketAction.java | 2 +- src/main/resources/fabric.mod.json | 6 - src/main/resources/itematic.mixins.json | 5 +- 1498 files changed, 9428 insertions(+), 8485 deletions(-) delete mode 100644 src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/HorseArmorFeatureRendererAccess.java delete mode 100644 src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/WolfArmorFeatureRendererAccess.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/entity/HorseEntityRendererExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/entity/WolfEntityRendererExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemModelsExtender.java delete mode 100644 src/datagen/java/net/errorcraft/itematic/data/server/registry/ArmorMaterialProvider.java delete mode 100644 src/main/generated/data/minecraft/armor_material/armadillo.json delete mode 100644 src/main/generated/data/minecraft/armor_material/chainmail.json delete mode 100644 src/main/generated/data/minecraft/armor_material/diamond.json delete mode 100644 src/main/generated/data/minecraft/armor_material/gold.json delete mode 100644 src/main/generated/data/minecraft/armor_material/iron.json delete mode 100644 src/main/generated/data/minecraft/armor_material/leather.json delete mode 100644 src/main/generated/data/minecraft/armor_material/netherite.json delete mode 100644 src/main/generated/data/minecraft/armor_material/turtle.json create mode 100644 src/main/java/net/errorcraft/itematic/component/type/GliderDataComponent.java delete mode 100644 src/main/java/net/errorcraft/itematic/entity/EquipmentSlotUtil.java rename src/main/java/net/errorcraft/itematic/item/{ItemBase.java => ItemDisplay.java} (53%) delete mode 100644 src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java delete mode 100644 src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterialKeys.java delete mode 100644 src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterials.java create mode 100644 src/main/java/net/errorcraft/itematic/item/component/components/GliderItemComponent.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/ElytraItemExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/item/EquipmentExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/screen/AbstractFurnaceScreenHandlerExtender.java diff --git a/gradle.properties b/gradle.properties index 77bc6e43..de7cc58d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w35a - yarn_mappings=24w35a+build.6 + minecraft_version=24w36a + yarn_mappings=24w36a+build.6 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.103.1+1.21.2 + fabric_version=0.104.0+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/HorseArmorFeatureRendererAccess.java b/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/HorseArmorFeatureRendererAccess.java deleted file mode 100644 index f5086d4f..00000000 --- a/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/HorseArmorFeatureRendererAccess.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.errorcraft.itematic.access.client.render.entity.feature; - -import net.minecraft.client.render.model.BakedModelManager; - -public interface HorseArmorFeatureRendererAccess { - default void itematic$setArmorMaterialsAtlas(BakedModelManager bakery) {} -} diff --git a/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/WolfArmorFeatureRendererAccess.java b/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/WolfArmorFeatureRendererAccess.java deleted file mode 100644 index c5b8889e..00000000 --- a/src/client/java/net/errorcraft/itematic/access/client/render/entity/feature/WolfArmorFeatureRendererAccess.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.errorcraft.itematic.access.client.render.entity.feature; - -import net.minecraft.client.render.model.BakedModelManager; - -public interface WolfArmorFeatureRendererAccess { - default void itematic$setArmorMaterialsAtlas(BakedModelManager bakery) {} -} diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/progress/provider/ItemHolderOccupancyProgressProvider.java b/src/client/java/net/errorcraft/itematic/client/item/bar/progress/provider/ItemHolderOccupancyProgressProvider.java index c10907e7..6b62d9b4 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/progress/provider/ItemHolderOccupancyProgressProvider.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/progress/provider/ItemHolderOccupancyProgressProvider.java @@ -26,7 +26,7 @@ public float get(ItemStack stack) { } private static Optional occupancy(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .map(c -> c.occupancy(stack)); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/color/item/ItemColorsExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/color/item/ItemColorsExtender.java index 511e15c1..42380574 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/color/item/ItemColorsExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/color/item/ItemColorsExtender.java @@ -16,7 +16,7 @@ public class ItemColorsExtender { */ @Overwrite public int getColor(ItemStack item, int tintIndex) { - return item.itematic$getComponent(ItemComponentTypes.TINTED) + return item.itematic$getBehavior(ItemComponentTypes.TINTED) .map(TintedItemComponent::tint) .map(c -> c.color(item, tintIndex)) .orElse(ItemColor.DEFAULT_COLOR); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java index 3942aff5..76de3203 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/StatsScreenExtender.java @@ -70,6 +70,7 @@ private void storeItemsSet(StatsScreen statsScreen, MinecraftClient client, Call if (client.world == null) { items.set(Set.of()); } + this.statHandler = ((StatsScreenAccess) this.field_18752).itematic$statHandler(); items.set(this.entries(client.world.getRegistryManager())); } @@ -110,6 +111,7 @@ private Set> entries(DynamicRegistryManager registryManager) if (this.hasNoStatFor(statType, entry)) { continue; } + entries.add(entry); break; } @@ -119,6 +121,7 @@ private Set> entries(DynamicRegistryManager registryManager) if (this.hasNoStatFor(statType, entry)) { continue; } + RegistryKey itemKey = entry.value().itematic$asItemKey(); items.getOptional(itemKey).ifPresent(entries::add); break; @@ -133,6 +136,7 @@ private boolean hasNoStatFor(StatType statType, RegistryEntry entry) { if (!statType.itematic$hasStat(entry)) { return true; } + return this.statHandler.getStat(statType.itematic$getOrCreateStat(entry)) <= 0; } @@ -146,7 +150,7 @@ public static class ItemComparatorExtender { ) ) private boolean instanceOfBlockItemForFirstItemUseItemComponentCheck(Object reference, Class clazz, StatsScreen.ItemStatsListWidget.Entry first, @Share("blockItemComponentFirst") LocalRef blockItemComponentFirst) { - Optional optionalComponent = first.getItem().itematic$getComponent(ItemComponentTypes.BLOCK); + Optional optionalComponent = first.getItem().itematic$getBehavior(ItemComponentTypes.BLOCK); optionalComponent.ifPresent(blockItemComponentFirst::set); return optionalComponent.isPresent(); } @@ -165,7 +169,7 @@ private boolean instanceOfBlockItemForFirstItemUseItemComponentCheck(Object refe ) ) private boolean instanceOfBlockItemForSecondItemUseItemComponentCheck(Object reference, Class clazz, StatsScreen.ItemStatsListWidget.Entry first, StatsScreen.ItemStatsListWidget.Entry second, @Share("blockItemComponentSecond") LocalRef blockItemComponentSecond) { - Optional optionalComponent = first.getItem().itematic$getComponent(ItemComponentTypes.BLOCK); + Optional optionalComponent = first.getItem().itematic$getBehavior(ItemComponentTypes.BLOCK); optionalComponent.ifPresent(blockItemComponentSecond::set); return optionalComponent.isPresent(); } @@ -332,7 +336,7 @@ private ItemStack newItemStackUseRegistryEntry(Item instance) { ) ) private boolean instanceOfBlockItemUseItemComponentCheck(Object reference, Class clazz, @Share("blockItemComponent") LocalRef blockItemComponent) { - Optional optionalComponent = this.entry.value().itematic$getComponent(ItemComponentTypes.BLOCK); + Optional optionalComponent = this.entry.value().itematic$getBehavior(ItemComponentTypes.BLOCK); optionalComponent.ifPresent(blockItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/LoomScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/LoomScreenExtender.java index 2f105107..24c68244 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/LoomScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/LoomScreenExtender.java @@ -43,7 +43,7 @@ private Item getItemUseNull(ItemStack instance) { ) private DyeColor getColorUseItemComponent(BannerItem instance, @Local(ordinal = 3) Slot outputSlot) { return outputSlot.getStack() - .itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + .itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .flatMap(BannerPatternHolderItemComponent::color) .orElse(DyeColor.WHITE); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java index 9f607a17..9fc768af 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java @@ -40,7 +40,7 @@ public SmithingScreenExtender(SmithingScreenHandler handler, PlayerInventory pla private void storeSmithingTemplate(CallbackInfo info, @Share("smithingTemplate") LocalRef> smithingTemplate) { smithingTemplate.set(this.handler.getSlot(0) .getStack() - .itematic$getComponent(ItemComponentTypes.SMITHING_TEMPLATE) + .itematic$getBehavior(ItemComponentTypes.SMITHING_TEMPLATE) .map(SmithingTemplateItemComponent::template) .map(RegistryEntry::value) ); @@ -78,7 +78,7 @@ private Optional> getEmptyAdditionsSlotTexturesFromSmithingTemp ) ) private boolean instanceOfSmithingTemplateItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 0) ItemStack itemStack, @Share("smithingTemplate") LocalRef smithingTemplate) { - Optional optionalSmithingTemplate = itemStack.itematic$getComponent(ItemComponentTypes.SMITHING_TEMPLATE) + Optional optionalSmithingTemplate = itemStack.itematic$getBehavior(ItemComponentTypes.SMITHING_TEMPLATE) .map(SmithingTemplateItemComponent::template) .map(RegistryEntry::value); optionalSmithingTemplate.ifPresent(smithingTemplate::set); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java index 26dfe447..a77be0c1 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java @@ -27,7 +27,7 @@ public AbstractFurnaceRecipeBookScreenExtender(AbstractFurnaceScreenHandler craf public void itematic$initializeRecipeSpecific(World world) { this.fuels = world.itematic$getItemAccess() .streamEntries() - .filter(reference -> reference.value().itematic$hasComponent(ItemComponentTypes.FUEL)) + .filter(reference -> reference.value().itematic$hasBehavior(ItemComponentTypes.FUEL)) .map(ItemStack::new) .toList(); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java index e3fbfe17..04836aa6 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java @@ -18,6 +18,6 @@ public class BundleTooltipSubmenuHandlerExtender { ) ) private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.ITEM_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.ITEM_HOLDER); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/AbstractClientPlayerEntityExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/AbstractClientPlayerEntityExtender.java index 83ca3bbb..e81a3455 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/AbstractClientPlayerEntityExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/AbstractClientPlayerEntityExtender.java @@ -40,7 +40,7 @@ private boolean isOfForBowUseRegistryKeyCheck(ItemStack instance, Item item) { ) ) private float fovMultiplierForSpyglassUseItemComponent(float original) { - return this.getActiveItem().itematic$getComponent(ItemComponentTypes.ZOOM) + return this.getActiveItem().itematic$getBehavior(ItemComponentTypes.ZOOM) .map(ZoomItemComponent::fieldOfViewMultiplier) .orElse(original); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java index ba8cd583..9d1e0396 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java @@ -51,7 +51,7 @@ private static void resetItemGroupDisplayContext(CallbackInfo info) { ) ) private static boolean isOfForTotemOfUndyingUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.LIFE_SAVING); + return instance.itematic$hasBehavior(ItemComponentTypes.LIFE_SAVING); } @Redirect( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java index 0bf34cbb..dca2a21c 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java @@ -1,6 +1,5 @@ package net.errorcraft.itematic.mixin.client.network; -import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.item.Item; @@ -11,17 +10,6 @@ @Mixin(ClientPlayerEntity.class) public class ClientPlayerEntityExtender { - @Redirect( - method = "tickMovement", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.ELYTRA); - } - @Redirect( method = "useBook", at = @At( @@ -30,6 +18,6 @@ private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) ) ) private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.WRITABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/block/entity/DecoratedPotBlockEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/block/entity/DecoratedPotBlockEntityRendererExtender.java index b95e8d96..48daeee2 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/block/entity/DecoratedPotBlockEntityRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/block/entity/DecoratedPotBlockEntityRendererExtender.java @@ -22,7 +22,7 @@ public class DecoratedPotBlockEntityRendererExtender { ) ) private static RegistryKey fromSherdUseItemComponent(Item sherd) { - return sherd.itematic$getComponent(ItemComponentTypes.DECORATED_POT_PATTERN) + return sherd.itematic$getBehavior(ItemComponentTypes.DECORATED_POT_PATTERN) .map(DecoratedPotPatternItemComponent::pattern) .flatMap(RegistryEntry::getKey) .orElse(null); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/HorseEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/HorseEntityRendererExtender.java deleted file mode 100644 index fd4b998e..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/HorseEntityRendererExtender.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.entity; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.HorseEntityRenderer; -import net.minecraft.client.render.entity.feature.HorseArmorFeatureRenderer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(HorseEntityRenderer.class) -public class HorseEntityRendererExtender { - @ModifyExpressionValue( - method = "", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/client/render/entity/feature/FeatureRendererContext;Lnet/minecraft/client/render/entity/model/EntityModelLoader;)Lnet/minecraft/client/render/entity/feature/HorseArmorFeatureRenderer;" - ) - ) - private HorseArmorFeatureRenderer setArmorMaterialsAtlas(HorseArmorFeatureRenderer original, @Local(argsOnly = true) EntityRendererFactory.Context context) { - original.itematic$setArmorMaterialsAtlas(context.getModelManager()); - return original; - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java index bc07eea5..7f042818 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java @@ -18,6 +18,6 @@ public class ItemFrameEntityRendererExtender { ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java index 642637e5..bcc3a501 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/PlayerEntityRendererExtender.java @@ -20,7 +20,7 @@ public class PlayerEntityRendererExtender { ) ) private static boolean isOfForCrossbowUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.SHOOTER) + return instance.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(ShooterItemComponent::method) .filter(method -> method.type() == ShooterMethodTypes.CHARGEABLE) .isPresent(); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/WolfEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/WolfEntityRendererExtender.java deleted file mode 100644 index 23fb7f45..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/WolfEntityRendererExtender.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.entity; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.WolfEntityRenderer; -import net.minecraft.client.render.entity.feature.WolfArmorFeatureRenderer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(WolfEntityRenderer.class) -public class WolfEntityRendererExtender { - @ModifyExpressionValue( - method = "", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/client/render/entity/feature/FeatureRendererContext;Lnet/minecraft/client/render/entity/model/EntityModelLoader;)Lnet/minecraft/client/render/entity/feature/WolfArmorFeatureRenderer;" - ) - ) - private WolfArmorFeatureRenderer setArmorMaterialsAtlas(WolfArmorFeatureRenderer original, @Local(argsOnly = true) EntityRendererFactory.Context context) { - original.itematic$setArmorMaterialsAtlas(context.getModelManager()); - return original; - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java index 4f916e5d..8a4cb549 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java @@ -1,227 +1,40 @@ package net.errorcraft.itematic.mixin.client.render.entity.feature; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import net.errorcraft.itematic.client.render.ItematicTexturedRenderLayers; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.ArmorItemComponent; -import net.errorcraft.itematic.item.component.components.EquipmentItemComponent; -import net.errorcraft.itematic.item.component.components.TintedItemComponent; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.feature.ArmorFeatureRenderer; -import net.minecraft.client.render.entity.feature.FeatureRendererContext; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.state.BipedEntityRenderState; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ArmorItem; -import net.minecraft.item.ArmorMaterial; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Iterator; -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ArmorFeatureRenderer.class) public class ArmorFeatureRendererExtender, A extends BipedEntityModel> { - @Unique - private SpriteAtlasTexture armorMaterialsAtlas; - @Inject( - method = "(Lnet/minecraft/client/render/entity/feature/FeatureRendererContext;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/entity/model/BipedEntityModel;Lnet/minecraft/client/render/model/BakedModelManager;)V", - at = @At("TAIL") - ) - private void setArmorMaterialsAtlas(FeatureRendererContext context, A innerModel, A outerModel, A babyInnerModel, A babyOuterModel, BakedModelManager bakedModelManager, CallbackInfo info) { - this.armorMaterialsAtlas = bakedModelManager.getAtlas(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE); - } - - @ModifyConstant( - method = "renderArmor", - constant = @Constant( - classValue = ArmorItem.class, - ordinal = 0 - ) - ) - private boolean instanceOfArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local(argsOnly = true) ItemStack itemStack, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.EQUIPMENT); - optionalComponent.ifPresent(equipmentItemComponent::set); - return optionalComponent.isPresent(); - } - - @ModifyVariable( - method = "renderArmor", - at = @At("LOAD"), - ordinal = 0 - ) - private Item castToArmorItemUseNull(Item instance) { - return null; - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ArmorItem;getSlotType()Lnet/minecraft/entity/EquipmentSlot;" - ) + method = "hasModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EquipmentSlot;)Z", + at = @At("HEAD"), + cancellable = true ) - private EquipmentSlot getSlotTypeUseItemComponent(ArmorItem instance, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { - return equipmentItemComponent.get().slot(); + private static void checkPresenceEquipmentBehavior(ItemStack stack, EquipmentSlot slot, CallbackInfoReturnable info) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.setReturnValue(false); + } } @Inject( method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/entity/model/BipedEntityModel;setAngles(Lnet/minecraft/client/render/entity/state/BipedEntityRenderState;)V" - ), + at = @At("HEAD"), cancellable = true ) - private void storeArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, S state, ItemStack stack, EquipmentSlot slot, int light, A armorModel, CallbackInfo info, @Share("armorItemComponent") LocalRef armorItemComponent) { - stack.itematic$getComponent(ItemComponentTypes.ARMOR) - .ifPresentOrElse(armorItemComponent::set, info::cancel); - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ArmorItem;getMaterial()Lnet/minecraft/registry/entry/RegistryEntry;" - ) - ) - private RegistryEntry getMaterialReturnNull(ArmorItem instance) { - return null; - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/registry/entry/RegistryEntry;value()Ljava/lang/Object;" - ) - ) - private R registryEntryValueReturnNull(RegistryEntry instance) { - return null; - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" - ) - ) - private boolean isInForDyeableItemUseItemComponentCheck(ItemStack instance, TagKey tag, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - Optional optionalComponent = instance.itematic$getComponent(ItemComponentTypes.TINTED); - optionalComponent.ifPresent(tintedItemComponent::set); - return optionalComponent.isPresent(); - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/component/type/DyedColorComponent;getColor(Lnet/minecraft/item/ItemStack;I)I" - ) - ) - private int getColorUseItemComponent(ItemStack stack, int defaultColor, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - return tintedItemComponent.get().tint().color(stack, 0); - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ArmorMaterial;layers()Ljava/util/List;" - ) - ) - private List layersForArmorMaterialReturnNull(ArmorMaterial instance) { - return null; - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Ljava/util/List;iterator()Ljava/util/Iterator;" - ) - ) - private Iterator iteratorForLayersUseCustomIterator(List instance, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - if (tintedItemComponent.get() != null) { - return Stream.of("", "_overlay").iterator(); + private void checkPresenceEquipmentBehavior(MatrixStack matrices, VertexConsumerProvider vertexConsumers, S state, ItemStack stack, EquipmentSlot slot, int light, A armorModel, CallbackInfo info) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.cancel(); } - return Stream.of("").iterator(); - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Ljava/util/Iterator;next()Ljava/lang/Object;" - ) - ) - private E nextElementForIteratorReturnNull(Iterator instance) { - return null; - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ArmorMaterial$Layer;getTexture(Z)Lnet/minecraft/util/Identifier;" - ) - ) - private Identifier getTextureUseItemComponent(ArmorMaterial.Layer instance, boolean secondLayer, @Local Iterator layers, @Share("armorItemComponent") LocalRef armorItemComponent) { - return armorItemComponent.get() - .textureId(secondLayer) - .withPath(path -> path + layers.next()); - } - - @Redirect( - method = "renderArmor", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ArmorMaterial$Layer;isDyeable()Z" - ) - ) - private boolean isDyeableUseItemComponent(ArmorMaterial.Layer instance, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - return tintedItemComponent.get() != null; - } - - @ModifyArg( - method = "renderArmorParts", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private RenderLayer useArmorMaterialRenderLayer(RenderLayer layer) { - return ItematicTexturedRenderLayers.ARMOR_MATERIAL_RENDER_LAYER; - } - - @ModifyExpressionValue( - method = "renderArmorParts", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private VertexConsumer useArmorMaterialsAtlas(VertexConsumer original, @Local(argsOnly = true) Identifier armorTexture) { - return this.armorMaterialsAtlas.getSprite(armorTexture) - .getTextureSpecificVertexConsumer(original); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java index 012269ba..adeddd59 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java @@ -1,23 +1,23 @@ package net.errorcraft.itematic.mixin.client.render.entity.feature; -import net.errorcraft.itematic.item.ItemKeys; +import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.render.entity.feature.CapeFeatureRenderer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CapeFeatureRenderer.class) public class CapeFeatureRendererExtender { - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/PlayerEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) + @Inject( + method = "method_64075", + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.ELYTRA); + private void checkPresenceEquipmentBehavior(ItemStack itemStack, CallbackInfoReturnable info) { + if (!itemStack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.setReturnValue(false); + } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java index 1408fac6..24a4b931 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ElytraFeatureRendererExtender.java @@ -1,23 +1,25 @@ package net.errorcraft.itematic.mixin.client.render.entity.feature; -import net.errorcraft.itematic.item.ItemKeys; +import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.feature.ElytraFeatureRenderer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.client.render.entity.state.BipedEntityRenderState; +import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ElytraFeatureRenderer.class) -public class ElytraFeatureRendererExtender { - @Redirect( +public class ElytraFeatureRendererExtender { + @Inject( method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/BipedEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.ELYTRA); + private void checkPresenceEquipmentBehavior(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, S bipedEntityRenderState, float f, float g, CallbackInfo info) { + if (!bipedEntityRenderState.equippedChestStack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.cancel(); + } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java index 58257227..84527b02 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HeadFeatureRendererExtender.java @@ -4,10 +4,10 @@ import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.EquipmentItemComponent; +import net.errorcraft.itematic.item.component.components.BlockItemComponent; +import net.minecraft.block.Block; import net.minecraft.client.render.entity.feature.HeadFeatureRenderer; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ArmorItem; +import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; @@ -20,27 +20,30 @@ public class HeadFeatureRendererExtender { @ModifyConstant( method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", constant = @Constant( - classValue = ArmorItem.class, + classValue = BlockItem.class, ordinal = 0 ) ) - private boolean renderInstanceOfArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.EQUIPMENT); - optionalComponent.ifPresent(equipmentItemComponent::set); + private boolean instanceOfBlockItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("blockItemComponent") LocalRef blockItemComponent) { + Optional optionalComponent = itemStack.itematic$getBehavior(ItemComponentTypes.BLOCK); + optionalComponent.ifPresent(blockItemComponent::set); return optionalComponent.isPresent(); } @ModifyVariable( method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", - at = @At("LOAD"), + at = @At( + value = "LOAD", + ordinal = 0 + ), slice = @Slice( from = @At( value = "INVOKE", - target = "Lnet/minecraft/client/render/block/entity/SkullBlockEntityRenderer;renderSkull(Lnet/minecraft/util/math/Direction;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/block/entity/SkullBlockEntityModel;Lnet/minecraft/client/render/RenderLayer;)V" + target = "Lnet/minecraft/client/render/entity/feature/HeadFeatureRenderer;getContextModel()Lnet/minecraft/client/render/entity/model/EntityModel;" ) ) ) - private Item renderCastToArmorItemUseNull(Item instance) { + private Item castToBlockItemUseNull(Item instance) { return null; } @@ -48,10 +51,10 @@ private Item renderCastToArmorItemUseNull(Item instance) { method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ArmorItem;getSlotType()Lnet/minecraft/entity/EquipmentSlot;" + target = "Lnet/minecraft/item/BlockItem;getBlock()Lnet/minecraft/block/Block;" ) ) - private EquipmentSlot renderGetSlotTypeUseItemComponent(ArmorItem instance, @Share("equipmentItemComponent") LocalRef equipmentItemComponent) { - return equipmentItemComponent.get().slot(); + private Block getBlockUseItemComponent(BlockItem instance, @Share("blockItemComponent") LocalRef blockItemComponent) { + return blockItemComponent.get().block().defaultBlock().value(); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java index a95aa62f..12ddeda3 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/HorseArmorFeatureRendererExtender.java @@ -1,138 +1,25 @@ package net.errorcraft.itematic.mixin.client.render.entity.feature; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import net.errorcraft.itematic.access.client.render.entity.feature.HorseArmorFeatureRendererAccess; -import net.errorcraft.itematic.client.render.ItematicTexturedRenderLayers; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.ArmorItemComponent; -import net.errorcraft.itematic.item.component.components.TintedItemComponent; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.feature.HorseArmorFeatureRenderer; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.item.AnimalArmorItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; +import net.minecraft.client.render.entity.state.HorseEntityRenderState; +import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; - -import java.util.Optional; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(HorseArmorFeatureRenderer.class) -public class HorseArmorFeatureRendererExtender implements HorseArmorFeatureRendererAccess { - @Unique - private SpriteAtlasTexture armorMaterialsAtlas; - - @ModifyConstant( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - constant = @Constant( - classValue = AnimalArmorItem.class, - ordinal = 0 - ) - ) - private boolean instanceOfAnimalArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("armorItemComponent") LocalRef armorItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.ARMOR); - optionalComponent.ifPresent(armorItemComponent::set); - return optionalComponent.isPresent(); - } - - @ModifyVariable( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At("LOAD") - ) - private Item castToAnimalArmorItemUseNull(Item instance) { - return null; - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/AnimalArmorItem;getType()Lnet/minecraft/item/AnimalArmorItem$Type;" - ) - ) - private AnimalArmorItem.Type getTypeUseItemComponent(AnimalArmorItem instance, @Share("armorItemComponent") LocalRef armorItemComponent) { - return armorItemComponent.get().armorType().orElse(null); - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/AnimalArmorItem;getEntityTexture()Lnet/minecraft/util/Identifier;" - ) - ) - private Identifier getEntityTextureReturnNull(AnimalArmorItem instance) { - return null; - } - - @Redirect( +public class HorseArmorFeatureRendererExtender { + @Inject( method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/RenderLayer;getEntityCutoutNoCull(Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/render/RenderLayer;" - ) + at = @At("HEAD"), + cancellable = true ) - private RenderLayer getEntityCutoutNoCullReturnNull(Identifier texture) { - return null; - } - - @ModifyArg( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private RenderLayer useArmorMaterialRenderLayer(RenderLayer layer) { - return ItematicTexturedRenderLayers.ARMOR_MATERIAL_RENDER_LAYER; - } - - @ModifyExpressionValue( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private VertexConsumer useArmorMaterialsAtlas(VertexConsumer original, @Share("armorItemComponent") LocalRef armorItemComponent) { - return this.armorMaterialsAtlas.getSprite(armorItemComponent.get().textureId()) - .getTextureSpecificVertexConsumer(original); - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" - ) - ) - private boolean isInForDyeableItemUseItemComponentCheck(ItemStack instance, TagKey tag, @Local ItemStack itemStack, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.TINTED); - optionalComponent.ifPresent(tintedItemComponent::set); - return optionalComponent.isPresent(); - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/HorseEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/component/type/DyedColorComponent;getColor(Lnet/minecraft/item/ItemStack;I)I" - ) - ) - private int getColorUseItemComponent(ItemStack stack, int defaultColor, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - return tintedItemComponent.get().tint().color(stack, 0); - } - - @Override - public void itematic$setArmorMaterialsAtlas(BakedModelManager bakery) { - this.armorMaterialsAtlas = bakery.getAtlas(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE); + private void checkPresenceEquipmentBehavior(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, HorseEntityRenderState horseEntityRenderState, float f, float g, CallbackInfo info) { + if (!horseEntityRenderState.armor.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.cancel(); + } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java index 5d443151..f14f03a9 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/WolfArmorFeatureRendererExtender.java @@ -1,170 +1,25 @@ package net.errorcraft.itematic.mixin.client.render.entity.feature; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import net.errorcraft.itematic.access.client.render.entity.feature.WolfArmorFeatureRendererAccess; -import net.errorcraft.itematic.client.render.ItematicTexturedRenderLayers; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.ArmorItemComponent; -import net.errorcraft.itematic.item.component.components.TintedItemComponent; -import net.minecraft.client.model.Model; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.feature.WolfArmorFeatureRenderer; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.render.entity.state.WolfEntityRenderState; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.AnimalArmorItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.Optional; - @Mixin(WolfArmorFeatureRenderer.class) -public class WolfArmorFeatureRendererExtender implements WolfArmorFeatureRendererAccess { - @Unique - private SpriteAtlasTexture armorMaterialsAtlas; - - @ModifyConstant( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - constant = @Constant( - classValue = AnimalArmorItem.class, - ordinal = 0 - ) - ) - private boolean instanceOfAnimalArmorItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("armorItemComponent") LocalRef armorItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.ARMOR); - optionalComponent.ifPresent(armorItemComponent::set); - return optionalComponent.isPresent(); - } - - @ModifyVariable( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - at = @At("LOAD") - ) - private Item castToAnimalArmorItemUseNull(Item instance) { - return null; - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/AnimalArmorItem;getType()Lnet/minecraft/item/AnimalArmorItem$Type;" - ) - ) - private AnimalArmorItem.Type getTypeUseItemComponent(AnimalArmorItem instance, @Share("armorItemComponent") LocalRef armorItemComponent) { - return armorItemComponent.get().armorType().orElse(null); - } - - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/AnimalArmorItem;getEntityTexture()Lnet/minecraft/util/Identifier;" - ) - ) - private Identifier getEntityTextureReturnNull(AnimalArmorItem instance) { - return null; - } - - @Redirect( - method = { - "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - "renderDyed" - }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/RenderLayer;getEntityCutoutNoCull(Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/render/RenderLayer;" - ) - ) - private RenderLayer getEntityCutoutNoCullReturnNull(Identifier texture) { - return null; - } - - @ModifyArg( - method = { - "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - "renderDyed" - }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private RenderLayer useArmorMaterialRenderLayer(RenderLayer layer) { - return ItematicTexturedRenderLayers.ARMOR_MATERIAL_RENDER_LAYER; - } - - @ModifyExpressionValue( - method = { - "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", - "renderDyed" - }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;" - ) - ) - private VertexConsumer useArmorMaterialsAtlas(VertexConsumer original, @Share("armorItemComponent") LocalRef armorItemComponent) { - return this.armorMaterialsAtlas.getSprite(armorItemComponent.get().textureId()) - .getTextureSpecificVertexConsumer(original); - } - +public class WolfArmorFeatureRendererExtender { @Inject( - method = "renderDyed", - at = @At("HEAD") - ) - private void setArmorItemComponent(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, ItemStack stack, AnimalArmorItem item, Model model, CallbackInfo info, @Share("armorItemComponent") LocalRef armorItemComponent) { - armorItemComponent.set(stack.itematic$getComponent(ItemComponentTypes.ARMOR).orElseThrow()); - } - - @Redirect( - method = "renderDyed", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" - ) - ) - private boolean isInForDyeableItemUseItemComponentCheck(ItemStack instance, TagKey tag, @Local(argsOnly = true) ItemStack itemStack, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.TINTED); - optionalComponent.ifPresent(tintedItemComponent::set); - return optionalComponent.isPresent(); - } - - @Redirect( - method = "renderDyed", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/component/type/DyedColorComponent;getColor(Lnet/minecraft/item/ItemStack;I)I" - ) - ) - private int getColorUseItemComponent(ItemStack stack, int defaultColor, @Share("tintedItemComponent") LocalRef tintedItemComponent) { - return tintedItemComponent.get().tint().color(stack, 1); - } - - @Redirect( - method = "renderDyed", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/AnimalArmorItem;getOverlayTexture()Lnet/minecraft/util/Identifier;" - ) + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/WolfEntityRenderState;FF)V", + at = @At("HEAD"), + cancellable = true ) - private Identifier getOverlayTextureUseItemComponent(AnimalArmorItem instance, @Share("armorItemComponent") LocalRef armorItemComponent) { - return armorItemComponent.get().textureId().withPath(path -> path + "_overlay"); - } - - @Override - public void itematic$setArmorMaterialsAtlas(BakedModelManager bakery) { - this.armorMaterialsAtlas = bakery.getAtlas(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE); + private void checkPresenceEquipmentBehavior(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, WolfEntityRenderState wolfEntityRenderState, float f, float g, CallbackInfo info) { + if (!wolfEntityRenderState.bodyArmor.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.cancel(); + } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/BuiltinModelItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/BuiltinModelItemRendererExtender.java index 03f16423..1def2676 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/BuiltinModelItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/BuiltinModelItemRendererExtender.java @@ -28,7 +28,7 @@ public class BuiltinModelItemRendererExtender { ) ) private boolean instanceOfBlockItemUseItemComponentCheck(Object reference, Class clazz, @Local(argsOnly = true) ItemStack itemStack, @Share("blockItemComponent") LocalRef blockItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.BLOCK); + Optional optionalComponent = itemStack.itematic$getBehavior(ItemComponentTypes.BLOCK); optionalComponent.ifPresent(blockItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java index a876a2bf..609c5096 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java @@ -44,7 +44,7 @@ public class HeldItemRendererExtender { ) ) private static boolean isOfForBowUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.SHOOTER) + return instance.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(ShooterItemComponent::method) .filter(method -> method.type() == ShooterMethodTypes.DIRECT) .isPresent(); @@ -66,7 +66,7 @@ private static boolean isOfForBowUseItemComponent(ItemStack instance, Item item) ) ) private boolean isOfForCrossbowUseItemComponent(ItemStack instance, Item item, AbstractClientPlayerEntity player, @Share("useDuration") LocalIntRef useDuration) { - Optional optionalShooter = instance.itematic$getComponent(ItemComponentTypes.SHOOTER); + Optional optionalShooter = instance.itematic$getBehavior(ItemComponentTypes.SHOOTER); if (optionalShooter.isEmpty()) { return false; } @@ -181,7 +181,7 @@ private int getUseTimeLeftForBowAndSpearUseNegatedUsedTicks(AbstractClientPlayer ) ) private static boolean isOfForCrossbowUseItemComponentStatic(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.SHOOTER) + return instance.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(ShooterItemComponent::method) .filter(method -> method.type() == ShooterMethodTypes.CHARGEABLE) .isPresent(); @@ -203,6 +203,6 @@ private static boolean isOfForCrossbowUseItemComponentStatic(ItemStack instance, ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemModelsExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemModelsExtender.java deleted file mode 100644 index d44e4f1c..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemModelsExtender.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.item; - -import net.minecraft.client.render.item.ItemModels; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(ItemModels.class) -public abstract class ItemModelsExtender { - @Shadow - @Final - private BakedModelManager modelManager; - - @Redirect( - method = "getModel(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/render/model/BakedModel;", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/render/item/ItemModels;getModel(Lnet/minecraft/item/Item;)Lnet/minecraft/client/render/model/BakedModel;" - ) - ) - private BakedModel getModelUseModelManager(ItemModels instance, Item item, ItemStack stack) { - return this.modelManager.getModel(new ModelIdentifier(stack.itematic$key().getValue(), "inventory")); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java index ec8b72c1..a1e91653 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java @@ -5,34 +5,18 @@ import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.registry.DefaultedRegistry; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; -import java.util.Collections; -import java.util.Iterator; - @Mixin(ItemRenderer.class) public class ItemRendererExtender { - @Redirect( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/registry/DefaultedRegistry;iterator()Ljava/util/Iterator;" - ) - ) - private Iterator doNotRegisterItems(DefaultedRegistry instance) { - return Collections.emptyIterator(); - } - @Redirect( method = { - "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", - "getModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)Lnet/minecraft/client/render/model/BakedModel;", - "method_62476" + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V" }, at = @At( value = "INVOKE", @@ -52,10 +36,7 @@ private boolean isOfForTridentUseRegistryKeyCheck(ItemStack instance, Item item) } @Redirect( - method = { - "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", - "getModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)Lnet/minecraft/client/render/model/BakedModel;" - }, + method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -89,7 +70,7 @@ private boolean isOfForSpyglassUseRegistryKeyCheck(ItemStack instance, Item item ) ) private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.ITEM_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.ITEM_HOLDER); } @Redirect( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/json/ModelOverrideListExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/model/json/ModelOverrideListExtender.java index 17319fdc..42aebf4a 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/json/ModelOverrideListExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/model/json/ModelOverrideListExtender.java @@ -15,7 +15,7 @@ @Mixin(ModelOverrideList.class) public class ModelOverrideListExtender { @Redirect( - method = "apply", + method = "getModel", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/item/ModelPredicateProviderRegistry;get(Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/item/ModelPredicateProvider;" @@ -28,9 +28,11 @@ private ModelPredicateProvider getModelOverrideUseRegistry(ItemStack stack, Iden if (override == null) { return null; } + if (!override.isApplicable(stack)) { return null; } + return new ModelPredicateProviderWrapper(override); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/world/ClientWorldExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/world/ClientWorldExtender.java index b71a0d68..b685d94e 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/world/ClientWorldExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/world/ClientWorldExtender.java @@ -43,7 +43,7 @@ private boolean isBlockMarkerItemUseRegistryKey(Set instance, Object o, @L ) ) private boolean instanceOfBlockItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("blockItemComponent") LocalRef blockItemComponent) { - Optional optionalComponent = itemStack.itematic$getComponent(ItemComponentTypes.BLOCK); + Optional optionalComponent = itemStack.itematic$getBehavior(ItemComponentTypes.BLOCK); optionalComponent.ifPresent(blockItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index 702a33ea..dcec27ff 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -44,11 +44,9 @@ "render.block.BlockRenderManagerExtender", "render.block.entity.DecoratedPotBlockEntityRendererExtender", "render.entity.FishingBobberEntityRendererExtender", - "render.entity.HorseEntityRendererExtender", "render.entity.ItemEntityRendererExtender", "render.entity.ItemFrameEntityRendererExtender", "render.entity.PlayerEntityRendererExtender", - "render.entity.WolfEntityRendererExtender", "render.entity.feature.ArmorFeatureRendererExtender", "render.entity.feature.CapeFeatureRendererExtender", "render.entity.feature.ElytraFeatureRendererExtender", @@ -61,7 +59,6 @@ "render.feature.WitchHeldItemFeatureRendererExtender", "render.item.BuiltinModelItemRendererExtender", "render.item.HeldItemRendererExtender", - "render.item.ItemModelsExtender", "render.item.ItemRendererExtender", "render.model.BakedModelManagerExtender", "render.model.json.ModelOverrideListExtender", diff --git a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java index 5511548a..c2445dad 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java +++ b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java @@ -21,7 +21,6 @@ public void addJsonKeySortOrders(JsonKeySortOrderCallback callback) { public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); pack.addProvider(ItemProvider::new); - pack.addProvider(ArmorMaterialProvider::new); pack.addProvider(AtlasProvider::new); pack.addProvider(ItemTagProvider::new); pack.addProvider(BlockTagProvider::new); diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/registry/ArmorMaterialProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/registry/ArmorMaterialProvider.java deleted file mode 100644 index 6aeb494d..00000000 --- a/src/datagen/java/net/errorcraft/itematic/data/server/registry/ArmorMaterialProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.errorcraft.itematic.data.server.registry; - -import net.errorcraft.itematic.registry.ItematicRegistryKeys; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; -import net.minecraft.registry.RegistryWrapper; - -import java.util.concurrent.CompletableFuture; - -public class ArmorMaterialProvider extends FabricDynamicRegistryProvider { - public ArmorMaterialProvider(FabricDataOutput output, CompletableFuture registriesFuture) { - super(output, registriesFuture); - } - - @Override - protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { - DynamicRegistryProviderUtil.addAll(entries, registries.getOrThrow(ItematicRegistryKeys.ARMOR_MATERIAL)); - } - - @Override - public String getName() { - return "Armor Materials"; - } -} diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java b/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java index 884050b1..5edd8093 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/TestUtil.java @@ -56,15 +56,15 @@ public static ItemStack createItemStackWithEnchantment(ServerWorld world, Regist return stack; } - public static > T getItemComponent(ItemStack stack, ItemComponentType type) { - return stack.itematic$getComponent(type) - .orElseThrow(() -> new GameTestException("Item " + stack.itematic$key() + " does not contain the " + ItematicRegistries.ITEM_COMPONENT_TYPE.getKey(type).orElseThrow() + " item component")); + public static > T getItemBehavior(ItemStack stack, ItemComponentType type) { + return stack.itematic$getBehavior(type) + .orElseThrow(() -> new GameTestException("Item " + stack.itematic$key() + " does not have the " + ItematicRegistries.ITEM_COMPONENT_TYPE.getKey(type).orElseThrow() + " behavior")); } public static T getDataComponent(ItemStack stack, ComponentType type) { T component = stack.get(type); if (component == null) { - throw new GameTestException("Item stack does not contain the " + type + " component"); + throw new GameTestException("Item stack does not contain the " + type + " data component"); } return component; diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/BundleTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/BundleTestSuite.java index ec70ed68..a59524f1 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/BundleTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/BundleTestSuite.java @@ -72,7 +72,7 @@ public void addingBundleToBundleAddsItWithPenalty(TestContext context) { Assert.itemStackIsOf(bundleContents.get(0), ItemKeys.BUNDLE); }); context.assertEquals( - TestUtil.getItemComponent(bundleStack, ItemComponentTypes.ITEM_HOLDER).occupancy(bundleStack), + TestUtil.getItemBehavior(bundleStack, ItemComponentTypes.ITEM_HOLDER).occupancy(bundleStack), BundleContentsComponentAccessor.nestedBundleOccupancy(), "occupancy" ); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java index 75900e2b..46100a77 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java @@ -24,7 +24,7 @@ public void usingItemEquipsStack(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.LEATHER_HELMET); player.setStackInHand(Hand.MAIN_HAND, stack); - EquipmentItemComponent component = TestUtil.getItemComponent(stack, ItemComponentTypes.EQUIPMENT); + EquipmentItemComponent component = TestUtil.getItemBehavior(stack, ItemComponentTypes.EQUIPMENT); stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> Assert.itemStackIsOf(player.getEquippedStack(component.slot()), ItemKeys.LEATHER_HELMET)); } @@ -35,7 +35,7 @@ public void usingItemThatIsNotSwappableDoesNotEquipStack(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.SHIELD); player.setStackInHand(Hand.MAIN_HAND, stack); - EquipmentItemComponent component = TestUtil.getItemComponent(stack, ItemComponentTypes.EQUIPMENT); + EquipmentItemComponent component = TestUtil.getItemBehavior(stack, ItemComponentTypes.EQUIPMENT); stack.use(world, player, Hand.MAIN_HAND); context.addInstantFinalTask(() -> Assert.itemStackIsEmpty(player.getEquippedStack(component.slot()))); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/FoodItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/FoodItemComponentTestSuite.java index e8e49204..67b24653 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/FoodItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/FoodItemComponentTestSuite.java @@ -28,7 +28,7 @@ public void eatingFoodItemAddsNutrition(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.APPLE); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - FoodItemComponent component = TestUtil.getItemComponent(stack, ItemComponentTypes.FOOD); + FoodItemComponent component = TestUtil.getItemBehavior(stack, ItemComponentTypes.FOOD); stack.use(world, player, Hand.MAIN_HAND); context.createTimedTaskRunner().expectMinDurationAndRun( TestUtil.getDataComponent(stack, ItematicDataComponentTypes.USE_DURATION).ticks(stack, player), @@ -48,7 +48,7 @@ public void eatingSuspiciousStewAddsSuspiciousEffects(TestContext context) { PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.SUSPICIOUS_STEW); - List effects = TestUtil.getItemComponent(world.itematic$createStack(ItemKeys.DANDELION), ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT) + List effects = TestUtil.getItemBehavior(world.itematic$createStack(ItemKeys.DANDELION), ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT) .effects(); stack.set(DataComponentTypes.SUSPICIOUS_STEW_EFFECTS, new SuspiciousStewEffectsComponent(effects)); player.setStackInHand(Hand.MAIN_HAND, stack); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ItemHolderItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ItemHolderItemComponentTestSuite.java index ab22e814..a5d53dbe 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ItemHolderItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ItemHolderItemComponentTestSuite.java @@ -109,7 +109,7 @@ public void rightClickingOnItemHolderRemovesStackFromItemHolder(TestContext cont private static void addToBundleContentsComponent(ItemStack origin, ItemStack stackToAdd) { BundleContentsComponent.Builder builder = Objects.requireNonNull( - TestUtil.getItemComponent(origin, ItemComponentTypes.ITEM_HOLDER).createBuilder(origin) + TestUtil.getItemBehavior(origin, ItemComponentTypes.ITEM_HOLDER).createBuilder(origin) ); builder.add(stackToAdd); origin.set(DataComponentTypes.BUNDLE_CONTENTS, builder.build()); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java index d54cbf49..aba87e9c 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java @@ -107,7 +107,7 @@ public void throwingLingeringPotionSpawnsPotionAtEyePosition(TestContext context public void throwingTridentSpawnsTridentAtEyePosition(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.TRIDENT); - int minDrawDuration = TestUtil.getItemComponent(stack, ItemComponentTypes.THROWABLE) + int minDrawDuration = TestUtil.getItemBehavior(stack, ItemComponentTypes.THROWABLE) .drawDuration() .flatMap(NumberRange.IntRange::min) .orElseThrow(() -> new GameTestException("Trident does not have a minimum draw duration")); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java index 8d9a5086..ec64d980 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java @@ -48,7 +48,7 @@ public void zombieAttackingWithIronSwordDealsCorrectDamage(TestContext context) context.assertTrue(zombie.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), + MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); @@ -65,7 +65,7 @@ public void piglinAttackingWithIronSwordDealsCorrectDamage(TestContext context) context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), + MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); @@ -82,7 +82,7 @@ public void piglinAttackingWithGoldenSwordDealsCorrectDamage(TestContext context context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), - MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemComponent(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), + MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead" ); }).completeIfSuccessful(); diff --git a/src/main/generated/data/minecraft/armor_material/armadillo.json b/src/main/generated/data/minecraft/armor_material/armadillo.json deleted file mode 100644 index 647847f1..00000000 --- a/src/main/generated/data/minecraft/armor_material/armadillo.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:armadillo", - "defense": { - "body": 11, - "boots": 3, - "chestplate": 8, - "helmet": 3, - "leggings": 6 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/chainmail.json b/src/main/generated/data/minecraft/armor_material/chainmail.json deleted file mode 100644 index 9369742a..00000000 --- a/src/main/generated/data/minecraft/armor_material/chainmail.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:chainmail", - "defense": { - "body": 4, - "boots": 1, - "chestplate": 5, - "helmet": 2, - "leggings": 4 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/diamond.json b/src/main/generated/data/minecraft/armor_material/diamond.json deleted file mode 100644 index 3caa88f7..00000000 --- a/src/main/generated/data/minecraft/armor_material/diamond.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:diamond", - "defense": { - "body": 11, - "boots": 3, - "chestplate": 8, - "helmet": 3, - "leggings": 6 - }, - "knockback_resistance": 0.0, - "toughness": 2.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/gold.json b/src/main/generated/data/minecraft/armor_material/gold.json deleted file mode 100644 index d3c3cf1e..00000000 --- a/src/main/generated/data/minecraft/armor_material/gold.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:gold", - "defense": { - "body": 7, - "boots": 1, - "chestplate": 5, - "helmet": 2, - "leggings": 3 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/iron.json b/src/main/generated/data/minecraft/armor_material/iron.json deleted file mode 100644 index 86168b33..00000000 --- a/src/main/generated/data/minecraft/armor_material/iron.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:iron", - "defense": { - "body": 5, - "boots": 2, - "chestplate": 6, - "helmet": 2, - "leggings": 5 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/leather.json b/src/main/generated/data/minecraft/armor_material/leather.json deleted file mode 100644 index 7ec30b1a..00000000 --- a/src/main/generated/data/minecraft/armor_material/leather.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:leather", - "defense": { - "body": 3, - "boots": 1, - "chestplate": 3, - "helmet": 1, - "leggings": 2 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/netherite.json b/src/main/generated/data/minecraft/armor_material/netherite.json deleted file mode 100644 index af68ac9f..00000000 --- a/src/main/generated/data/minecraft/armor_material/netherite.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:netherite", - "defense": { - "body": 11, - "boots": 3, - "chestplate": 8, - "helmet": 3, - "leggings": 6 - }, - "knockback_resistance": 0.10000000149011612, - "toughness": 3.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/armor_material/turtle.json b/src/main/generated/data/minecraft/armor_material/turtle.json deleted file mode 100644 index a66bba5e..00000000 --- a/src/main/generated/data/minecraft/armor_material/turtle.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "asset_id": "minecraft:turtle", - "defense": { - "body": 5, - "boots": 2, - "chestplate": 6, - "helmet": 2, - "leggings": 5 - }, - "knockback_resistance": 0.0, - "toughness": 0.0 -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_boat.json b/src/main/generated/data/minecraft/item/acacia_boat.json index add4a3e4..a7a60de0 100644 --- a/src/main/generated/data/minecraft/item/acacia_boat.json +++ b/src/main/generated/data/minecraft/item/acacia_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.acacia_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:acacia_boat", + "translation_key": "item.minecraft.acacia_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_button.json b/src/main/generated/data/minecraft/item/acacia_button.json index 5c386a44..af3fd478 100644 --- a/src/main/generated/data/minecraft/item/acacia_button.json +++ b/src/main/generated/data/minecraft/item/acacia_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_button", + "translation_key": "block.minecraft.acacia_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_chest_boat.json b/src/main/generated/data/minecraft/item/acacia_chest_boat.json index a05238e7..17566984 100644 --- a/src/main/generated/data/minecraft/item/acacia_chest_boat.json +++ b/src/main/generated/data/minecraft/item/acacia_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.acacia_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:acacia_chest_boat", + "translation_key": "item.minecraft.acacia_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_door.json b/src/main/generated/data/minecraft/item/acacia_door.json index 9a81af46..1feda011 100644 --- a/src/main/generated/data/minecraft/item/acacia_door.json +++ b/src/main/generated/data/minecraft/item/acacia_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_door", + "translation_key": "block.minecraft.acacia_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_fence.json b/src/main/generated/data/minecraft/item/acacia_fence.json index d0ee6c67..709fd09d 100644 --- a/src/main/generated/data/minecraft/item/acacia_fence.json +++ b/src/main/generated/data/minecraft/item/acacia_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_fence", + "translation_key": "block.minecraft.acacia_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_fence_gate.json b/src/main/generated/data/minecraft/item/acacia_fence_gate.json index f586e5ec..58050a50 100644 --- a/src/main/generated/data/minecraft/item/acacia_fence_gate.json +++ b/src/main/generated/data/minecraft/item/acacia_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_fence_gate", + "translation_key": "block.minecraft.acacia_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_hanging_sign.json b/src/main/generated/data/minecraft/item/acacia_hanging_sign.json index 3ea376c3..546c34d0 100644 --- a/src/main/generated/data/minecraft/item/acacia_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/acacia_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:acacia_hanging_sign", + "translation_key": "block.minecraft.acacia_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_leaves.json b/src/main/generated/data/minecraft/item/acacia_leaves.json index 2569f05c..97991911 100644 --- a/src/main/generated/data/minecraft/item/acacia_leaves.json +++ b/src/main/generated/data/minecraft/item/acacia_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_leaves" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:acacia_leaves", + "translation_key": "block.minecraft.acacia_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_log.json b/src/main/generated/data/minecraft/item/acacia_log.json index ed2c5d18..f7b11ce4 100644 --- a/src/main/generated/data/minecraft/item/acacia_log.json +++ b/src/main/generated/data/minecraft/item/acacia_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_log", + "translation_key": "block.minecraft.acacia_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_planks.json b/src/main/generated/data/minecraft/item/acacia_planks.json index 9e7a95ef..922de679 100644 --- a/src/main/generated/data/minecraft/item/acacia_planks.json +++ b/src/main/generated/data/minecraft/item/acacia_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_planks", + "translation_key": "block.minecraft.acacia_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_pressure_plate.json b/src/main/generated/data/minecraft/item/acacia_pressure_plate.json index ff08de11..e6c129cb 100644 --- a/src/main/generated/data/minecraft/item/acacia_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/acacia_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_pressure_plate", + "translation_key": "block.minecraft.acacia_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_sapling.json b/src/main/generated/data/minecraft/item/acacia_sapling.json index bc85b6ae..00010045 100644 --- a/src/main/generated/data/minecraft/item/acacia_sapling.json +++ b/src/main/generated/data/minecraft/item/acacia_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:acacia_sapling", + "translation_key": "block.minecraft.acacia_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/acacia_sign.json b/src/main/generated/data/minecraft/item/acacia_sign.json index 94ea7760..6235d8e9 100644 --- a/src/main/generated/data/minecraft/item/acacia_sign.json +++ b/src/main/generated/data/minecraft/item/acacia_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:acacia_sign", + "translation_key": "block.minecraft.acacia_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_slab.json b/src/main/generated/data/minecraft/item/acacia_slab.json index 0c2cdf03..bca64ba9 100644 --- a/src/main/generated/data/minecraft/item/acacia_slab.json +++ b/src/main/generated/data/minecraft/item/acacia_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_slab", + "translation_key": "block.minecraft.acacia_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_stairs.json b/src/main/generated/data/minecraft/item/acacia_stairs.json index c960d611..b5588706 100644 --- a/src/main/generated/data/minecraft/item/acacia_stairs.json +++ b/src/main/generated/data/minecraft/item/acacia_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_stairs", + "translation_key": "block.minecraft.acacia_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_trapdoor.json b/src/main/generated/data/minecraft/item/acacia_trapdoor.json index cefd9dd9..2dbebc12 100644 --- a/src/main/generated/data/minecraft/item/acacia_trapdoor.json +++ b/src/main/generated/data/minecraft/item/acacia_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_trapdoor", + "translation_key": "block.minecraft.acacia_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_wood.json b/src/main/generated/data/minecraft/item/acacia_wood.json index 7d615927..a3961943 100644 --- a/src/main/generated/data/minecraft/item/acacia_wood.json +++ b/src/main/generated/data/minecraft/item/acacia_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.acacia_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:acacia_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:acacia_wood", + "translation_key": "block.minecraft.acacia_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/activator_rail.json b/src/main/generated/data/minecraft/item/activator_rail.json index 1cd11d90..7458d83d 100644 --- a/src/main/generated/data/minecraft/item/activator_rail.json +++ b/src/main/generated/data/minecraft/item/activator_rail.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.activator_rail" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:activator_rail" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:activator_rail", + "translation_key": "block.minecraft.activator_rail" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/air.json b/src/main/generated/data/minecraft/item/air.json index 786baabb..c907b882 100644 --- a/src/main/generated/data/minecraft/item/air.json +++ b/src/main/generated/data/minecraft/item/air.json @@ -1,5 +1,6 @@ { - "base": { + "display": { + "model": "minecraft:air", "translation_key": "block.minecraft.air" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/allay_spawn_egg.json b/src/main/generated/data/minecraft/item/allay_spawn_egg.json index 5038da96..c876d9a9 100644 --- a/src/main/generated/data/minecraft/item/allay_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/allay_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.allay_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:allay_spawn_egg", + "translation_key": "item.minecraft.allay_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/allium.json b/src/main/generated/data/minecraft/item/allium.json index da75375a..7d7d81d9 100644 --- a/src/main/generated/data/minecraft/item/allium.json +++ b/src/main/generated/data/minecraft/item/allium.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.allium" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:allium" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:allium", + "translation_key": "block.minecraft.allium" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/amethyst_block.json b/src/main/generated/data/minecraft/item/amethyst_block.json index e905e8cc..65b892a1 100644 --- a/src/main/generated/data/minecraft/item/amethyst_block.json +++ b/src/main/generated/data/minecraft/item/amethyst_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.amethyst_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:amethyst_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:amethyst_block", + "translation_key": "block.minecraft.amethyst_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/amethyst_cluster.json b/src/main/generated/data/minecraft/item/amethyst_cluster.json index fd9c79c9..0652287f 100644 --- a/src/main/generated/data/minecraft/item/amethyst_cluster.json +++ b/src/main/generated/data/minecraft/item/amethyst_cluster.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.amethyst_cluster" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:amethyst_cluster" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:amethyst_cluster", + "translation_key": "block.minecraft.amethyst_cluster" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/amethyst_shard.json b/src/main/generated/data/minecraft/item/amethyst_shard.json index e423e91b..4a8fb6e5 100644 --- a/src/main/generated/data/minecraft/item/amethyst_shard.json +++ b/src/main/generated/data/minecraft/item/amethyst_shard.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.amethyst_shard" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:amethyst_shard", + "translation_key": "item.minecraft.amethyst_shard" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ancient_debris.json b/src/main/generated/data/minecraft/item/ancient_debris.json index cd135ac8..5d422e98 100644 --- a/src/main/generated/data/minecraft/item/ancient_debris.json +++ b/src/main/generated/data/minecraft/item/ancient_debris.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.ancient_debris" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:ancient_debris" }, @@ -10,5 +7,9 @@ "damage": "minecraft:is_fire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ancient_debris", + "translation_key": "block.minecraft.ancient_debris" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/andesite.json b/src/main/generated/data/minecraft/item/andesite.json index 9b68b40e..193c1893 100644 --- a/src/main/generated/data/minecraft/item/andesite.json +++ b/src/main/generated/data/minecraft/item/andesite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.andesite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:andesite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:andesite", + "translation_key": "block.minecraft.andesite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/andesite_slab.json b/src/main/generated/data/minecraft/item/andesite_slab.json index 725897db..d3018790 100644 --- a/src/main/generated/data/minecraft/item/andesite_slab.json +++ b/src/main/generated/data/minecraft/item/andesite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.andesite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:andesite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:andesite_slab", + "translation_key": "block.minecraft.andesite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/andesite_stairs.json b/src/main/generated/data/minecraft/item/andesite_stairs.json index b8050b9f..b89c7812 100644 --- a/src/main/generated/data/minecraft/item/andesite_stairs.json +++ b/src/main/generated/data/minecraft/item/andesite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.andesite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:andesite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:andesite_stairs", + "translation_key": "block.minecraft.andesite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/andesite_wall.json b/src/main/generated/data/minecraft/item/andesite_wall.json index 201f1369..3ea08153 100644 --- a/src/main/generated/data/minecraft/item/andesite_wall.json +++ b/src/main/generated/data/minecraft/item/andesite_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.andesite_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:andesite_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:andesite_wall", + "translation_key": "block.minecraft.andesite_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/angler_pottery_sherd.json b/src/main/generated/data/minecraft/item/angler_pottery_sherd.json index a4e13ca4..59a2382b 100644 --- a/src/main/generated/data/minecraft/item/angler_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/angler_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.angler_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:angler" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:angler_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.angler_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/anvil.json b/src/main/generated/data/minecraft/item/anvil.json index ce232811..f3f1318e 100644 --- a/src/main/generated/data/minecraft/item/anvil.json +++ b/src/main/generated/data/minecraft/item/anvil.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.anvil" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:anvil" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:anvil", + "translation_key": "block.minecraft.anvil" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/apple.json b/src/main/generated/data/minecraft/item/apple.json index e61d7005..1ed70c5a 100644 --- a/src/main/generated/data/minecraft/item/apple.json +++ b/src/main/generated/data/minecraft/item/apple.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.apple" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.65 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:apple", + "translation_key": "item.minecraft.apple" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/archer_pottery_sherd.json b/src/main/generated/data/minecraft/item/archer_pottery_sherd.json index 6eb9d809..4dd6e908 100644 --- a/src/main/generated/data/minecraft/item/archer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/archer_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.archer_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:archer" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:archer_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.archer_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/armadillo_scute.json b/src/main/generated/data/minecraft/item/armadillo_scute.json index 474bdc77..e9b8c713 100644 --- a/src/main/generated/data/minecraft/item/armadillo_scute.json +++ b/src/main/generated/data/minecraft/item/armadillo_scute.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.armadillo_scute" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:armadillo_scute", + "translation_key": "item.minecraft.armadillo_scute" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json b/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json index 3fcc8b0e..e2efdd25 100644 --- a/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/armadillo_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.armadillo_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:armadillo_spawn_egg", + "translation_key": "item.minecraft.armadillo_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/armor_stand.json b/src/main/generated/data/minecraft/item/armor_stand.json index 8de1a284..7e038ba7 100644 --- a/src/main/generated/data/minecraft/item/armor_stand.json +++ b/src/main/generated/data/minecraft/item/armor_stand.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.armor_stand" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:armor_stand", + "translation_key": "item.minecraft.armor_stand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json b/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json index 7534f0de..b70cba4b 100644 --- a/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/arms_up_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.arms_up_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:arms_up" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:arms_up_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.arms_up_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/arrow.json b/src/main/generated/data/minecraft/item/arrow.json index 80c9a73b..9438469f 100644 --- a/src/main/generated/data/minecraft/item/arrow.json +++ b/src/main/generated/data/minecraft/item/arrow.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.arrow" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_projectile" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:arrow", + "translation_key": "item.minecraft.arrow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/axolotl_bucket.json b/src/main/generated/data/minecraft/item/axolotl_bucket.json index 2fd6a6bc..510fc435 100644 --- a/src/main/generated/data/minecraft/item/axolotl_bucket.json +++ b/src/main/generated/data/minecraft/item/axolotl_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.axolotl_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_axolotl", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:axolotl_bucket", + "translation_key": "item.minecraft.axolotl_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json b/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json index e3acddcd..be931eb8 100644 --- a/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/axolotl_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.axolotl_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:axolotl_spawn_egg", + "translation_key": "item.minecraft.axolotl_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/azalea.json b/src/main/generated/data/minecraft/item/azalea.json index 378ccd53..7e9d2636 100644 --- a/src/main/generated/data/minecraft/item/azalea.json +++ b/src/main/generated/data/minecraft/item/azalea.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.azalea" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:azalea" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:azalea", + "translation_key": "block.minecraft.azalea" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/azalea_leaves.json b/src/main/generated/data/minecraft/item/azalea_leaves.json index cb0f8971..d72f460d 100644 --- a/src/main/generated/data/minecraft/item/azalea_leaves.json +++ b/src/main/generated/data/minecraft/item/azalea_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.azalea_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:azalea_leaves" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:azalea_leaves", + "translation_key": "block.minecraft.azalea_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/azure_bluet.json b/src/main/generated/data/minecraft/item/azure_bluet.json index ee578c26..4915c4df 100644 --- a/src/main/generated/data/minecraft/item/azure_bluet.json +++ b/src/main/generated/data/minecraft/item/azure_bluet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.azure_bluet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:azure_bluet" }, @@ -18,6 +15,10 @@ ] } }, + "display": { + "model": "minecraft:azure_bluet", + "translation_key": "block.minecraft.azure_bluet" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/baked_potato.json b/src/main/generated/data/minecraft/item/baked_potato.json index 2020077d..23c7fef3 100644 --- a/src/main/generated/data/minecraft/item/baked_potato.json +++ b/src/main/generated/data/minecraft/item/baked_potato.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.baked_potato" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.85 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:baked_potato", + "translation_key": "item.minecraft.baked_potato" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo.json b/src/main/generated/data/minecraft/item/bamboo.json index 0e5b19fd..a4015ff6 100644 --- a/src/main/generated/data/minecraft/item/bamboo.json +++ b/src/main/generated/data/minecraft/item/bamboo.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:bamboo", + "translation_key": "block.minecraft.bamboo" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/bamboo_block.json b/src/main/generated/data/minecraft/item/bamboo_block.json index fe6f94c7..b493c0ee 100644 --- a/src/main/generated/data/minecraft/item/bamboo_block.json +++ b/src/main/generated/data/minecraft/item/bamboo_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_block" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_block", + "translation_key": "block.minecraft.bamboo_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_button.json b/src/main/generated/data/minecraft/item/bamboo_button.json index 0aec6091..6e0331d0 100644 --- a/src/main/generated/data/minecraft/item/bamboo_button.json +++ b/src/main/generated/data/minecraft/item/bamboo_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_button", + "translation_key": "block.minecraft.bamboo_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_chest_raft.json b/src/main/generated/data/minecraft/item/bamboo_chest_raft.json index 4704a362..2b914210 100644 --- a/src/main/generated/data/minecraft/item/bamboo_chest_raft.json +++ b/src/main/generated/data/minecraft/item/bamboo_chest_raft.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bamboo_chest_raft" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:bamboo_chest_raft", + "translation_key": "item.minecraft.bamboo_chest_raft" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_door.json b/src/main/generated/data/minecraft/item/bamboo_door.json index 8d8d0718..f12a5175 100644 --- a/src/main/generated/data/minecraft/item/bamboo_door.json +++ b/src/main/generated/data/minecraft/item/bamboo_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_door", + "translation_key": "block.minecraft.bamboo_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_fence.json b/src/main/generated/data/minecraft/item/bamboo_fence.json index 5fd4f6ae..167d79aa 100644 --- a/src/main/generated/data/minecraft/item/bamboo_fence.json +++ b/src/main/generated/data/minecraft/item/bamboo_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_fence", + "translation_key": "block.minecraft.bamboo_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_fence_gate.json b/src/main/generated/data/minecraft/item/bamboo_fence_gate.json index 1e2b0c01..6991b13a 100644 --- a/src/main/generated/data/minecraft/item/bamboo_fence_gate.json +++ b/src/main/generated/data/minecraft/item/bamboo_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_fence_gate", + "translation_key": "block.minecraft.bamboo_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_hanging_sign.json b/src/main/generated/data/minecraft/item/bamboo_hanging_sign.json index 9745014d..ae57ad6b 100644 --- a/src/main/generated/data/minecraft/item/bamboo_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/bamboo_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:bamboo_hanging_sign", + "translation_key": "block.minecraft.bamboo_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_mosaic.json b/src/main/generated/data/minecraft/item/bamboo_mosaic.json index 44a3d02b..4c4f5190 100644 --- a/src/main/generated/data/minecraft/item/bamboo_mosaic.json +++ b/src/main/generated/data/minecraft/item/bamboo_mosaic.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_mosaic" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_mosaic" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_mosaic", + "translation_key": "block.minecraft.bamboo_mosaic" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_mosaic_slab.json b/src/main/generated/data/minecraft/item/bamboo_mosaic_slab.json index 7919b50f..8091ebd5 100644 --- a/src/main/generated/data/minecraft/item/bamboo_mosaic_slab.json +++ b/src/main/generated/data/minecraft/item/bamboo_mosaic_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_mosaic_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_mosaic_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_mosaic_slab", + "translation_key": "block.minecraft.bamboo_mosaic_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_mosaic_stairs.json b/src/main/generated/data/minecraft/item/bamboo_mosaic_stairs.json index 247f12b3..7b33ce0c 100644 --- a/src/main/generated/data/minecraft/item/bamboo_mosaic_stairs.json +++ b/src/main/generated/data/minecraft/item/bamboo_mosaic_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_mosaic_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_mosaic_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_mosaic_stairs", + "translation_key": "block.minecraft.bamboo_mosaic_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_planks.json b/src/main/generated/data/minecraft/item/bamboo_planks.json index b08956d3..fad90d23 100644 --- a/src/main/generated/data/minecraft/item/bamboo_planks.json +++ b/src/main/generated/data/minecraft/item/bamboo_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_planks", + "translation_key": "block.minecraft.bamboo_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_pressure_plate.json b/src/main/generated/data/minecraft/item/bamboo_pressure_plate.json index 4cb73b95..44d0460f 100644 --- a/src/main/generated/data/minecraft/item/bamboo_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/bamboo_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_pressure_plate", + "translation_key": "block.minecraft.bamboo_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_raft.json b/src/main/generated/data/minecraft/item/bamboo_raft.json index 37101b41..eed7e69e 100644 --- a/src/main/generated/data/minecraft/item/bamboo_raft.json +++ b/src/main/generated/data/minecraft/item/bamboo_raft.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bamboo_raft" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:bamboo_raft", + "translation_key": "item.minecraft.bamboo_raft" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_sign.json b/src/main/generated/data/minecraft/item/bamboo_sign.json index f3f262b8..2953a7a4 100644 --- a/src/main/generated/data/minecraft/item/bamboo_sign.json +++ b/src/main/generated/data/minecraft/item/bamboo_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:bamboo_sign", + "translation_key": "block.minecraft.bamboo_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_slab.json b/src/main/generated/data/minecraft/item/bamboo_slab.json index fa3059dc..45642a8b 100644 --- a/src/main/generated/data/minecraft/item/bamboo_slab.json +++ b/src/main/generated/data/minecraft/item/bamboo_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_slab", + "translation_key": "block.minecraft.bamboo_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_stairs.json b/src/main/generated/data/minecraft/item/bamboo_stairs.json index 26e7bd67..86d14aea 100644 --- a/src/main/generated/data/minecraft/item/bamboo_stairs.json +++ b/src/main/generated/data/minecraft/item/bamboo_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_stairs", + "translation_key": "block.minecraft.bamboo_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bamboo_trapdoor.json b/src/main/generated/data/minecraft/item/bamboo_trapdoor.json index 5d2a036f..07b0a1c7 100644 --- a/src/main/generated/data/minecraft/item/bamboo_trapdoor.json +++ b/src/main/generated/data/minecraft/item/bamboo_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bamboo_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bamboo_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bamboo_trapdoor", + "translation_key": "block.minecraft.bamboo_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/barrel.json b/src/main/generated/data/minecraft/item/barrel.json index 03c3a313..3d864ed8 100644 --- a/src/main/generated/data/minecraft/item/barrel.json +++ b/src/main/generated/data/minecraft/item/barrel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.barrel" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:barrel" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:barrel", + "translation_key": "block.minecraft.barrel" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/barrier.json b/src/main/generated/data/minecraft/item/barrier.json index f82ef961..c765ac7c 100644 --- a/src/main/generated/data/minecraft/item/barrier.json +++ b/src/main/generated/data/minecraft/item/barrier.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.barrier" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:barrier" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:barrier", + "rarity": "epic", + "translation_key": "block.minecraft.barrier" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/basalt.json b/src/main/generated/data/minecraft/item/basalt.json index 0150b940..825515f4 100644 --- a/src/main/generated/data/minecraft/item/basalt.json +++ b/src/main/generated/data/minecraft/item/basalt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.basalt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:basalt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:basalt", + "translation_key": "block.minecraft.basalt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bat_spawn_egg.json b/src/main/generated/data/minecraft/item/bat_spawn_egg.json index e8b2cf7b..cf96cb99 100644 --- a/src/main/generated/data/minecraft/item/bat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bat_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bat_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:bat_spawn_egg", + "translation_key": "item.minecraft.bat_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beacon.json b/src/main/generated/data/minecraft/item/beacon.json index 96377056..d5ea9fbf 100644 --- a/src/main/generated/data/minecraft/item/beacon.json +++ b/src/main/generated/data/minecraft/item/beacon.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "block.minecraft.beacon" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:beacon" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:beacon", + "rarity": "rare", + "translation_key": "block.minecraft.beacon" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bedrock.json b/src/main/generated/data/minecraft/item/bedrock.json index 55351041..7ce0f1ad 100644 --- a/src/main/generated/data/minecraft/item/bedrock.json +++ b/src/main/generated/data/minecraft/item/bedrock.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bedrock" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bedrock" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bedrock", + "translation_key": "block.minecraft.bedrock" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bee_nest.json b/src/main/generated/data/minecraft/item/bee_nest.json index 59705310..57551b06 100644 --- a/src/main/generated/data/minecraft/item/bee_nest.json +++ b/src/main/generated/data/minecraft/item/bee_nest.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bee_nest" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bee_nest" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bee_nest", + "translation_key": "block.minecraft.bee_nest" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bee_spawn_egg.json b/src/main/generated/data/minecraft/item/bee_spawn_egg.json index 580436c2..fb2fa81b 100644 --- a/src/main/generated/data/minecraft/item/bee_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bee_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bee_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:bee_spawn_egg", + "translation_key": "item.minecraft.bee_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beef.json b/src/main/generated/data/minecraft/item/beef.json index 388a836f..28cc68c9 100644 --- a/src/main/generated/data/minecraft/item/beef.json +++ b/src/main/generated/data/minecraft/item/beef.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.beef" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 3, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:beef", + "translation_key": "item.minecraft.beef" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beehive.json b/src/main/generated/data/minecraft/item/beehive.json index b2b8dc3d..97486651 100644 --- a/src/main/generated/data/minecraft/item/beehive.json +++ b/src/main/generated/data/minecraft/item/beehive.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.beehive" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:beehive" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:beehive", + "translation_key": "block.minecraft.beehive" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beetroot.json b/src/main/generated/data/minecraft/item/beetroot.json index e89c9dc4..a869135a 100644 --- a/src/main/generated/data/minecraft/item/beetroot.json +++ b/src/main/generated/data/minecraft/item/beetroot.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.beetroot" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.65 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:beetroot", + "translation_key": "item.minecraft.beetroot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beetroot_seeds.json b/src/main/generated/data/minecraft/item/beetroot_seeds.json index 82e84cf8..751f628a 100644 --- a/src/main/generated/data/minecraft/item/beetroot_seeds.json +++ b/src/main/generated/data/minecraft/item/beetroot_seeds.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.beetroot_seeds" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:beetroots" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:beetroot_seeds", + "translation_key": "item.minecraft.beetroot_seeds" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/beetroot_soup.json b/src/main/generated/data/minecraft/item/beetroot_soup.json index 2f8adb23..41a27d18 100644 --- a/src/main/generated/data/minecraft/item/beetroot_soup.json +++ b/src/main/generated/data/minecraft/item/beetroot_soup.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.beetroot_soup" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -20,5 +17,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:beetroot_soup", + "translation_key": "item.minecraft.beetroot_soup" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bell.json b/src/main/generated/data/minecraft/item/bell.json index 600891c7..b6c81737 100644 --- a/src/main/generated/data/minecraft/item/bell.json +++ b/src/main/generated/data/minecraft/item/bell.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bell" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bell" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bell", + "translation_key": "block.minecraft.bell" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/big_dripleaf.json b/src/main/generated/data/minecraft/item/big_dripleaf.json index 24589e38..4fd0afe8 100644 --- a/src/main/generated/data/minecraft/item/big_dripleaf.json +++ b/src/main/generated/data/minecraft/item/big_dripleaf.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.big_dripleaf" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:big_dripleaf" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:big_dripleaf", + "translation_key": "block.minecraft.big_dripleaf" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_boat.json b/src/main/generated/data/minecraft/item/birch_boat.json index df246387..ce59d78c 100644 --- a/src/main/generated/data/minecraft/item/birch_boat.json +++ b/src/main/generated/data/minecraft/item/birch_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.birch_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:birch_boat", + "translation_key": "item.minecraft.birch_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_button.json b/src/main/generated/data/minecraft/item/birch_button.json index b66e94f7..5c4727f6 100644 --- a/src/main/generated/data/minecraft/item/birch_button.json +++ b/src/main/generated/data/minecraft/item/birch_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_button", + "translation_key": "block.minecraft.birch_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_chest_boat.json b/src/main/generated/data/minecraft/item/birch_chest_boat.json index f61454be..4d871702 100644 --- a/src/main/generated/data/minecraft/item/birch_chest_boat.json +++ b/src/main/generated/data/minecraft/item/birch_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.birch_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:birch_chest_boat", + "translation_key": "item.minecraft.birch_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_door.json b/src/main/generated/data/minecraft/item/birch_door.json index e833d738..470c395f 100644 --- a/src/main/generated/data/minecraft/item/birch_door.json +++ b/src/main/generated/data/minecraft/item/birch_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_door", + "translation_key": "block.minecraft.birch_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_fence.json b/src/main/generated/data/minecraft/item/birch_fence.json index bd961a2b..476b717d 100644 --- a/src/main/generated/data/minecraft/item/birch_fence.json +++ b/src/main/generated/data/minecraft/item/birch_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_fence", + "translation_key": "block.minecraft.birch_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_fence_gate.json b/src/main/generated/data/minecraft/item/birch_fence_gate.json index 38d5aaf5..8c066104 100644 --- a/src/main/generated/data/minecraft/item/birch_fence_gate.json +++ b/src/main/generated/data/minecraft/item/birch_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_fence_gate", + "translation_key": "block.minecraft.birch_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_hanging_sign.json b/src/main/generated/data/minecraft/item/birch_hanging_sign.json index dfd647f4..72563772 100644 --- a/src/main/generated/data/minecraft/item/birch_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/birch_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:birch_hanging_sign", + "translation_key": "block.minecraft.birch_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_leaves.json b/src/main/generated/data/minecraft/item/birch_leaves.json index f4b5a9f8..d44e99c8 100644 --- a/src/main/generated/data/minecraft/item/birch_leaves.json +++ b/src/main/generated/data/minecraft/item/birch_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_leaves" }, @@ -16,5 +13,9 @@ "color": -8345771 } } + }, + "display": { + "model": "minecraft:birch_leaves", + "translation_key": "block.minecraft.birch_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_log.json b/src/main/generated/data/minecraft/item/birch_log.json index 4c127865..3524aa5b 100644 --- a/src/main/generated/data/minecraft/item/birch_log.json +++ b/src/main/generated/data/minecraft/item/birch_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_log", + "translation_key": "block.minecraft.birch_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_planks.json b/src/main/generated/data/minecraft/item/birch_planks.json index cad107f9..f2b2b96b 100644 --- a/src/main/generated/data/minecraft/item/birch_planks.json +++ b/src/main/generated/data/minecraft/item/birch_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_planks", + "translation_key": "block.minecraft.birch_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_pressure_plate.json b/src/main/generated/data/minecraft/item/birch_pressure_plate.json index 47b14cf6..62f57e82 100644 --- a/src/main/generated/data/minecraft/item/birch_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/birch_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_pressure_plate", + "translation_key": "block.minecraft.birch_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_sapling.json b/src/main/generated/data/minecraft/item/birch_sapling.json index e6b81acd..0e0fc06a 100644 --- a/src/main/generated/data/minecraft/item/birch_sapling.json +++ b/src/main/generated/data/minecraft/item/birch_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:birch_sapling", + "translation_key": "block.minecraft.birch_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/birch_sign.json b/src/main/generated/data/minecraft/item/birch_sign.json index 024e85ae..2f323c7e 100644 --- a/src/main/generated/data/minecraft/item/birch_sign.json +++ b/src/main/generated/data/minecraft/item/birch_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:birch_sign", + "translation_key": "block.minecraft.birch_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_slab.json b/src/main/generated/data/minecraft/item/birch_slab.json index 1e9c71e0..046f224c 100644 --- a/src/main/generated/data/minecraft/item/birch_slab.json +++ b/src/main/generated/data/minecraft/item/birch_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_slab", + "translation_key": "block.minecraft.birch_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_stairs.json b/src/main/generated/data/minecraft/item/birch_stairs.json index c281332a..29ee98cc 100644 --- a/src/main/generated/data/minecraft/item/birch_stairs.json +++ b/src/main/generated/data/minecraft/item/birch_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_stairs", + "translation_key": "block.minecraft.birch_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_trapdoor.json b/src/main/generated/data/minecraft/item/birch_trapdoor.json index e4b06649..7710b760 100644 --- a/src/main/generated/data/minecraft/item/birch_trapdoor.json +++ b/src/main/generated/data/minecraft/item/birch_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_trapdoor", + "translation_key": "block.minecraft.birch_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/birch_wood.json b/src/main/generated/data/minecraft/item/birch_wood.json index 672bcf5d..2b4ea5c9 100644 --- a/src/main/generated/data/minecraft/item/birch_wood.json +++ b/src/main/generated/data/minecraft/item/birch_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.birch_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:birch_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:birch_wood", + "translation_key": "block.minecraft.birch_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_banner.json b/src/main/generated/data/minecraft/item/black_banner.json index 16ec6ef9..010b7c8b 100644 --- a/src/main/generated/data/minecraft/item/black_banner.json +++ b/src/main/generated/data/minecraft/item/black_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.black_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "black" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:black_banner", + "translation_key": "block.minecraft.black_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_bed.json b/src/main/generated/data/minecraft/item/black_bed.json index 898c94eb..c9056b10 100644 --- a/src/main/generated/data/minecraft/item/black_bed.json +++ b/src/main/generated/data/minecraft/item/black_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:black_bed", + "translation_key": "block.minecraft.black_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_candle.json b/src/main/generated/data/minecraft/item/black_candle.json index 0b4222b4..be9623d7 100644 --- a/src/main/generated/data/minecraft/item/black_candle.json +++ b/src/main/generated/data/minecraft/item/black_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_candle", + "translation_key": "block.minecraft.black_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_carpet.json b/src/main/generated/data/minecraft/item/black_carpet.json index b31cc5d1..2c50712c 100644 --- a/src/main/generated/data/minecraft/item/black_carpet.json +++ b/src/main/generated/data/minecraft/item/black_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.black_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:black_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_carpet", + "translation_key": "block.minecraft.black_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_concrete.json b/src/main/generated/data/minecraft/item/black_concrete.json index 25186b23..810989a2 100644 --- a/src/main/generated/data/minecraft/item/black_concrete.json +++ b/src/main/generated/data/minecraft/item/black_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_concrete", + "translation_key": "block.minecraft.black_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_concrete_powder.json b/src/main/generated/data/minecraft/item/black_concrete_powder.json index d90774f4..17fa1e24 100644 --- a/src/main/generated/data/minecraft/item/black_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/black_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_concrete_powder", + "translation_key": "block.minecraft.black_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_dye.json b/src/main/generated/data/minecraft/item/black_dye.json index 008fe884..3a7d2e92 100644 --- a/src/main/generated/data/minecraft/item/black_dye.json +++ b/src/main/generated/data/minecraft/item/black_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.black_dye" - }, - "components": { + "behavior": { "minecraft:dye": "black", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_dye", + "translation_key": "item.minecraft.black_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_glazed_terracotta.json b/src/main/generated/data/minecraft/item/black_glazed_terracotta.json index 4430407e..3fd2178c 100644 --- a/src/main/generated/data/minecraft/item/black_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/black_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_glazed_terracotta", + "translation_key": "block.minecraft.black_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_shulker_box.json b/src/main/generated/data/minecraft/item/black_shulker_box.json index b7d4db21..9e4996ad 100644 --- a/src/main/generated/data/minecraft/item/black_shulker_box.json +++ b/src/main/generated/data/minecraft/item/black_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.black_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:black_shulker_box", + "translation_key": "block.minecraft.black_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_stained_glass.json b/src/main/generated/data/minecraft/item/black_stained_glass.json index f264454e..d6c46c1a 100644 --- a/src/main/generated/data/minecraft/item/black_stained_glass.json +++ b/src/main/generated/data/minecraft/item/black_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_stained_glass", + "translation_key": "block.minecraft.black_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_stained_glass_pane.json b/src/main/generated/data/minecraft/item/black_stained_glass_pane.json index 39dd9e36..8dce204d 100644 --- a/src/main/generated/data/minecraft/item/black_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/black_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_stained_glass_pane", + "translation_key": "block.minecraft.black_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_terracotta.json b/src/main/generated/data/minecraft/item/black_terracotta.json index dd947e6b..3a091c39 100644 --- a/src/main/generated/data/minecraft/item/black_terracotta.json +++ b/src/main/generated/data/minecraft/item/black_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.black_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_terracotta", + "translation_key": "block.minecraft.black_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/black_wool.json b/src/main/generated/data/minecraft/item/black_wool.json index 3189aaf2..dc0d2453 100644 --- a/src/main/generated/data/minecraft/item/black_wool.json +++ b/src/main/generated/data/minecraft/item/black_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.black_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:black_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:black_wool", + "translation_key": "block.minecraft.black_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blackstone.json b/src/main/generated/data/minecraft/item/blackstone.json index f9a74503..77537b8c 100644 --- a/src/main/generated/data/minecraft/item/blackstone.json +++ b/src/main/generated/data/minecraft/item/blackstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blackstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blackstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blackstone", + "translation_key": "block.minecraft.blackstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blackstone_slab.json b/src/main/generated/data/minecraft/item/blackstone_slab.json index 5fad2fd5..813ba348 100644 --- a/src/main/generated/data/minecraft/item/blackstone_slab.json +++ b/src/main/generated/data/minecraft/item/blackstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blackstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blackstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blackstone_slab", + "translation_key": "block.minecraft.blackstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blackstone_stairs.json b/src/main/generated/data/minecraft/item/blackstone_stairs.json index f5627c1f..e9a3b602 100644 --- a/src/main/generated/data/minecraft/item/blackstone_stairs.json +++ b/src/main/generated/data/minecraft/item/blackstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blackstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blackstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blackstone_stairs", + "translation_key": "block.minecraft.blackstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blackstone_wall.json b/src/main/generated/data/minecraft/item/blackstone_wall.json index 3619af24..77c31459 100644 --- a/src/main/generated/data/minecraft/item/blackstone_wall.json +++ b/src/main/generated/data/minecraft/item/blackstone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blackstone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blackstone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blackstone_wall", + "translation_key": "block.minecraft.blackstone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blade_pottery_sherd.json b/src/main/generated/data/minecraft/item/blade_pottery_sherd.json index f138b52a..f4c30a2e 100644 --- a/src/main/generated/data/minecraft/item/blade_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/blade_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.blade_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:blade" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blade_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.blade_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blast_furnace.json b/src/main/generated/data/minecraft/item/blast_furnace.json index b3661d19..c01222c5 100644 --- a/src/main/generated/data/minecraft/item/blast_furnace.json +++ b/src/main/generated/data/minecraft/item/blast_furnace.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blast_furnace" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blast_furnace" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blast_furnace", + "translation_key": "block.minecraft.blast_furnace" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blaze_powder.json b/src/main/generated/data/minecraft/item/blaze_powder.json index 2623115b..b98c3aa1 100644 --- a/src/main/generated/data/minecraft/item/blaze_powder.json +++ b/src/main/generated/data/minecraft/item/blaze_powder.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.blaze_powder" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blaze_powder", + "translation_key": "item.minecraft.blaze_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blaze_rod.json b/src/main/generated/data/minecraft/item/blaze_rod.json index 248061da..4555f733 100644 --- a/src/main/generated/data/minecraft/item/blaze_rod.json +++ b/src/main/generated/data/minecraft/item/blaze_rod.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.blaze_rod" - }, - "components": { + "behavior": { "minecraft:fuel": { "ticks": 2400 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blaze_rod", + "translation_key": "item.minecraft.blaze_rod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blaze_spawn_egg.json b/src/main/generated/data/minecraft/item/blaze_spawn_egg.json index 7d20e06e..6c1bfe2a 100644 --- a/src/main/generated/data/minecraft/item/blaze_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/blaze_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.blaze_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:blaze_spawn_egg", + "translation_key": "item.minecraft.blaze_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_banner.json b/src/main/generated/data/minecraft/item/blue_banner.json index 1d02d48c..17a3dfda 100644 --- a/src/main/generated/data/minecraft/item/blue_banner.json +++ b/src/main/generated/data/minecraft/item/blue_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.blue_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "blue" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:blue_banner", + "translation_key": "block.minecraft.blue_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_bed.json b/src/main/generated/data/minecraft/item/blue_bed.json index c672b15e..a4e7b4d6 100644 --- a/src/main/generated/data/minecraft/item/blue_bed.json +++ b/src/main/generated/data/minecraft/item/blue_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:blue_bed", + "translation_key": "block.minecraft.blue_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_candle.json b/src/main/generated/data/minecraft/item/blue_candle.json index 86fb4eec..1710e00f 100644 --- a/src/main/generated/data/minecraft/item/blue_candle.json +++ b/src/main/generated/data/minecraft/item/blue_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_candle", + "translation_key": "block.minecraft.blue_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_carpet.json b/src/main/generated/data/minecraft/item/blue_carpet.json index 6a91a323..f99f6755 100644 --- a/src/main/generated/data/minecraft/item/blue_carpet.json +++ b/src/main/generated/data/minecraft/item/blue_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.blue_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:blue_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_carpet", + "translation_key": "block.minecraft.blue_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_concrete.json b/src/main/generated/data/minecraft/item/blue_concrete.json index fdba0424..9a356a8d 100644 --- a/src/main/generated/data/minecraft/item/blue_concrete.json +++ b/src/main/generated/data/minecraft/item/blue_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_concrete", + "translation_key": "block.minecraft.blue_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_concrete_powder.json b/src/main/generated/data/minecraft/item/blue_concrete_powder.json index 3b20df21..f7820de6 100644 --- a/src/main/generated/data/minecraft/item/blue_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/blue_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_concrete_powder", + "translation_key": "block.minecraft.blue_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_dye.json b/src/main/generated/data/minecraft/item/blue_dye.json index 0ed33196..c5cac757 100644 --- a/src/main/generated/data/minecraft/item/blue_dye.json +++ b/src/main/generated/data/minecraft/item/blue_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.blue_dye" - }, - "components": { + "behavior": { "minecraft:dye": "blue", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_dye", + "translation_key": "item.minecraft.blue_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_glazed_terracotta.json b/src/main/generated/data/minecraft/item/blue_glazed_terracotta.json index 98b7990e..aadfd795 100644 --- a/src/main/generated/data/minecraft/item/blue_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/blue_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_glazed_terracotta", + "translation_key": "block.minecraft.blue_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_ice.json b/src/main/generated/data/minecraft/item/blue_ice.json index 280d706d..021a9b26 100644 --- a/src/main/generated/data/minecraft/item/blue_ice.json +++ b/src/main/generated/data/minecraft/item/blue_ice.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_ice" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_ice" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_ice", + "translation_key": "block.minecraft.blue_ice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_orchid.json b/src/main/generated/data/minecraft/item/blue_orchid.json index 18f02e99..11639eff 100644 --- a/src/main/generated/data/minecraft/item/blue_orchid.json +++ b/src/main/generated/data/minecraft/item/blue_orchid.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.blue_orchid" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_orchid" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:blue_orchid", + "translation_key": "block.minecraft.blue_orchid" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/blue_shulker_box.json b/src/main/generated/data/minecraft/item/blue_shulker_box.json index d49f5879..c9f61a17 100644 --- a/src/main/generated/data/minecraft/item/blue_shulker_box.json +++ b/src/main/generated/data/minecraft/item/blue_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.blue_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:blue_shulker_box", + "translation_key": "block.minecraft.blue_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_stained_glass.json b/src/main/generated/data/minecraft/item/blue_stained_glass.json index ac500f9a..60514719 100644 --- a/src/main/generated/data/minecraft/item/blue_stained_glass.json +++ b/src/main/generated/data/minecraft/item/blue_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_stained_glass", + "translation_key": "block.minecraft.blue_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_stained_glass_pane.json b/src/main/generated/data/minecraft/item/blue_stained_glass_pane.json index 951f6d5f..9acd68b5 100644 --- a/src/main/generated/data/minecraft/item/blue_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/blue_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_stained_glass_pane", + "translation_key": "block.minecraft.blue_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_terracotta.json b/src/main/generated/data/minecraft/item/blue_terracotta.json index 42a794e0..9a5aa1cf 100644 --- a/src/main/generated/data/minecraft/item/blue_terracotta.json +++ b/src/main/generated/data/minecraft/item/blue_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.blue_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_terracotta", + "translation_key": "block.minecraft.blue_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_wool.json b/src/main/generated/data/minecraft/item/blue_wool.json index 0a9dead1..e83a8663 100644 --- a/src/main/generated/data/minecraft/item/blue_wool.json +++ b/src/main/generated/data/minecraft/item/blue_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.blue_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:blue_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:blue_wool", + "translation_key": "block.minecraft.blue_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bogged_spawn_egg.json b/src/main/generated/data/minecraft/item/bogged_spawn_egg.json index cbe240c8..580da0ee 100644 --- a/src/main/generated/data/minecraft/item/bogged_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/bogged_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bogged_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:bogged_spawn_egg", + "translation_key": "item.minecraft.bogged_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json index f2a0dc6c..036b90e6 100644 --- a/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/bolt_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.bolt_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:bolt_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bolt_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.bolt_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bone.json b/src/main/generated/data/minecraft/item/bone.json index 5740a4a8..f3985ce9 100644 --- a/src/main/generated/data/minecraft/item/bone.json +++ b/src/main/generated/data/minecraft/item/bone.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.bone" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bone", + "translation_key": "item.minecraft.bone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bone_block.json b/src/main/generated/data/minecraft/item/bone_block.json index 20c1327e..239de03f 100644 --- a/src/main/generated/data/minecraft/item/bone_block.json +++ b/src/main/generated/data/minecraft/item/bone_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bone_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bone_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bone_block", + "translation_key": "block.minecraft.bone_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bone_meal.json b/src/main/generated/data/minecraft/item/bone_meal.json index 5900c115..05bde70a 100644 --- a/src/main/generated/data/minecraft/item/bone_meal.json +++ b/src/main/generated/data/minecraft/item/bone_meal.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.bone_meal" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:use_item_on_block" }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:bone_meal", + "translation_key": "item.minecraft.bone_meal" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/book.json b/src/main/generated/data/minecraft/item/book.json index 8cb797a2..a72b13f3 100644 --- a/src/main/generated/data/minecraft/item/book.json +++ b/src/main/generated/data/minecraft/item/book.json @@ -1,12 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.book" - }, - "components": { + "behavior": { "minecraft:enchantable": { "enchantability": 1, "transforms_into": "minecraft:enchanted_book" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:book", + "translation_key": "item.minecraft.book" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bookshelf.json b/src/main/generated/data/minecraft/item/bookshelf.json index 557f4637..bc24e96e 100644 --- a/src/main/generated/data/minecraft/item/bookshelf.json +++ b/src/main/generated/data/minecraft/item/bookshelf.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bookshelf" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bookshelf" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bookshelf", + "translation_key": "block.minecraft.bookshelf" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json b/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json index b015555f..6383ecc5 100644 --- a/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/bordure_indented_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.bordure_indented_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/bordure_indented" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:bordure_indented_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.bordure_indented_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bow.json b/src/main/generated/data/minecraft/item/bow.json index 652090dc..7fb6ec47 100644 --- a/src/main/generated/data/minecraft/item/bow.json +++ b/src/main/generated/data/minecraft/item/bow.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bow" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 384 }, @@ -31,5 +28,9 @@ "type": "minecraft:shooter" } } + }, + "display": { + "model": "minecraft:bow", + "translation_key": "item.minecraft.bow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bowl.json b/src/main/generated/data/minecraft/item/bowl.json index 1713d486..2be57e70 100644 --- a/src/main/generated/data/minecraft/item/bowl.json +++ b/src/main/generated/data/minecraft/item/bowl.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.bowl" - }, - "components": { + "behavior": { "minecraft:fuel": { "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bowl", + "translation_key": "item.minecraft.bowl" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brain_coral.json b/src/main/generated/data/minecraft/item/brain_coral.json index a2770f28..c4d11507 100644 --- a/src/main/generated/data/minecraft/item/brain_coral.json +++ b/src/main/generated/data/minecraft/item/brain_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brain_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brain_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brain_coral", + "translation_key": "block.minecraft.brain_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brain_coral_block.json b/src/main/generated/data/minecraft/item/brain_coral_block.json index 4be304ad..25fa61e0 100644 --- a/src/main/generated/data/minecraft/item/brain_coral_block.json +++ b/src/main/generated/data/minecraft/item/brain_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brain_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brain_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brain_coral_block", + "translation_key": "block.minecraft.brain_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brain_coral_fan.json b/src/main/generated/data/minecraft/item/brain_coral_fan.json index 3c6e5295..7ab4ff36 100644 --- a/src/main/generated/data/minecraft/item/brain_coral_fan.json +++ b/src/main/generated/data/minecraft/item/brain_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brain_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brain_coral_fan", + "translation_key": "block.minecraft.brain_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bread.json b/src/main/generated/data/minecraft/item/bread.json index e333dcf4..846395af 100644 --- a/src/main/generated/data/minecraft/item/bread.json +++ b/src/main/generated/data/minecraft/item/bread.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bread" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.85 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:bread", + "translation_key": "item.minecraft.bread" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/breeze_rod.json b/src/main/generated/data/minecraft/item/breeze_rod.json index a1b31330..0a8e6eb3 100644 --- a/src/main/generated/data/minecraft/item/breeze_rod.json +++ b/src/main/generated/data/minecraft/item/breeze_rod.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.breeze_rod" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:breeze_rod", + "translation_key": "item.minecraft.breeze_rod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/breeze_spawn_egg.json b/src/main/generated/data/minecraft/item/breeze_spawn_egg.json index 4aeec6a5..2acbb8a6 100644 --- a/src/main/generated/data/minecraft/item/breeze_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/breeze_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.breeze_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:breeze_spawn_egg", + "translation_key": "item.minecraft.breeze_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json b/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json index 0e57fe50..79e16a4c 100644 --- a/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/brewer_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.brewer_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:brewer" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brewer_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.brewer_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brewing_stand.json b/src/main/generated/data/minecraft/item/brewing_stand.json index 66706a38..29d423db 100644 --- a/src/main/generated/data/minecraft/item/brewing_stand.json +++ b/src/main/generated/data/minecraft/item/brewing_stand.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brewing_stand" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brewing_stand" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brewing_stand", + "translation_key": "block.minecraft.brewing_stand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brick.json b/src/main/generated/data/minecraft/item/brick.json index c7c7e772..5a41fb47 100644 --- a/src/main/generated/data/minecraft/item/brick.json +++ b/src/main/generated/data/minecraft/item/brick.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.brick" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:blank" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brick", + "translation_key": "item.minecraft.brick" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brick_slab.json b/src/main/generated/data/minecraft/item/brick_slab.json index bfde0a2c..eb8f7dc2 100644 --- a/src/main/generated/data/minecraft/item/brick_slab.json +++ b/src/main/generated/data/minecraft/item/brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brick_slab", + "translation_key": "block.minecraft.brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brick_stairs.json b/src/main/generated/data/minecraft/item/brick_stairs.json index 44626e72..1cbd4f05 100644 --- a/src/main/generated/data/minecraft/item/brick_stairs.json +++ b/src/main/generated/data/minecraft/item/brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brick_stairs", + "translation_key": "block.minecraft.brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brick_wall.json b/src/main/generated/data/minecraft/item/brick_wall.json index 4d57cd3a..3965ac6e 100644 --- a/src/main/generated/data/minecraft/item/brick_wall.json +++ b/src/main/generated/data/minecraft/item/brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brick_wall", + "translation_key": "block.minecraft.brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bricks.json b/src/main/generated/data/minecraft/item/bricks.json index 81a67d0f..23d95c2b 100644 --- a/src/main/generated/data/minecraft/item/bricks.json +++ b/src/main/generated/data/minecraft/item/bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bricks", + "translation_key": "block.minecraft.bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_banner.json b/src/main/generated/data/minecraft/item/brown_banner.json index ec5c1f4d..7f0d25c8 100644 --- a/src/main/generated/data/minecraft/item/brown_banner.json +++ b/src/main/generated/data/minecraft/item/brown_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "brown" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:brown_banner", + "translation_key": "block.minecraft.brown_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_bed.json b/src/main/generated/data/minecraft/item/brown_bed.json index a3bb01a1..b0b1c37d 100644 --- a/src/main/generated/data/minecraft/item/brown_bed.json +++ b/src/main/generated/data/minecraft/item/brown_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:brown_bed", + "translation_key": "block.minecraft.brown_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_candle.json b/src/main/generated/data/minecraft/item/brown_candle.json index 13183164..4df6a1a9 100644 --- a/src/main/generated/data/minecraft/item/brown_candle.json +++ b/src/main/generated/data/minecraft/item/brown_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_candle", + "translation_key": "block.minecraft.brown_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_carpet.json b/src/main/generated/data/minecraft/item/brown_carpet.json index d9d5468b..a7eb46d9 100644 --- a/src/main/generated/data/minecraft/item/brown_carpet.json +++ b/src/main/generated/data/minecraft/item/brown_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:brown_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_carpet", + "translation_key": "block.minecraft.brown_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_concrete.json b/src/main/generated/data/minecraft/item/brown_concrete.json index 23ed5707..7034edea 100644 --- a/src/main/generated/data/minecraft/item/brown_concrete.json +++ b/src/main/generated/data/minecraft/item/brown_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_concrete", + "translation_key": "block.minecraft.brown_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_concrete_powder.json b/src/main/generated/data/minecraft/item/brown_concrete_powder.json index 4687e95b..da654ba4 100644 --- a/src/main/generated/data/minecraft/item/brown_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/brown_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_concrete_powder", + "translation_key": "block.minecraft.brown_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_dye.json b/src/main/generated/data/minecraft/item/brown_dye.json index a7359cf8..12f4065a 100644 --- a/src/main/generated/data/minecraft/item/brown_dye.json +++ b/src/main/generated/data/minecraft/item/brown_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.brown_dye" - }, - "components": { + "behavior": { "minecraft:dye": "brown", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_dye", + "translation_key": "item.minecraft.brown_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_glazed_terracotta.json b/src/main/generated/data/minecraft/item/brown_glazed_terracotta.json index a0d45122..0451b8b0 100644 --- a/src/main/generated/data/minecraft/item/brown_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/brown_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_glazed_terracotta", + "translation_key": "block.minecraft.brown_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_mushroom.json b/src/main/generated/data/minecraft/item/brown_mushroom.json index 75fd0149..2dcbde9d 100644 --- a/src/main/generated/data/minecraft/item/brown_mushroom.json +++ b/src/main/generated/data/minecraft/item/brown_mushroom.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_mushroom" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_mushroom" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:brown_mushroom", + "translation_key": "block.minecraft.brown_mushroom" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/brown_mushroom_block.json b/src/main/generated/data/minecraft/item/brown_mushroom_block.json index ddd64ad8..89b2f628 100644 --- a/src/main/generated/data/minecraft/item/brown_mushroom_block.json +++ b/src/main/generated/data/minecraft/item/brown_mushroom_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_mushroom_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_mushroom_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_mushroom_block", + "translation_key": "block.minecraft.brown_mushroom_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_shulker_box.json b/src/main/generated/data/minecraft/item/brown_shulker_box.json index a04e494e..156c9400 100644 --- a/src/main/generated/data/minecraft/item/brown_shulker_box.json +++ b/src/main/generated/data/minecraft/item/brown_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:brown_shulker_box", + "translation_key": "block.minecraft.brown_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_stained_glass.json b/src/main/generated/data/minecraft/item/brown_stained_glass.json index bddebca4..efe40879 100644 --- a/src/main/generated/data/minecraft/item/brown_stained_glass.json +++ b/src/main/generated/data/minecraft/item/brown_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_stained_glass", + "translation_key": "block.minecraft.brown_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_stained_glass_pane.json b/src/main/generated/data/minecraft/item/brown_stained_glass_pane.json index d609a6ee..62edf331 100644 --- a/src/main/generated/data/minecraft/item/brown_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/brown_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_stained_glass_pane", + "translation_key": "block.minecraft.brown_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_terracotta.json b/src/main/generated/data/minecraft/item/brown_terracotta.json index cb2d854c..8499032c 100644 --- a/src/main/generated/data/minecraft/item/brown_terracotta.json +++ b/src/main/generated/data/minecraft/item/brown_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.brown_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_terracotta", + "translation_key": "block.minecraft.brown_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_wool.json b/src/main/generated/data/minecraft/item/brown_wool.json index 05f28747..710a1b7d 100644 --- a/src/main/generated/data/minecraft/item/brown_wool.json +++ b/src/main/generated/data/minecraft/item/brown_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.brown_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:brown_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:brown_wool", + "translation_key": "block.minecraft.brown_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brush.json b/src/main/generated/data/minecraft/item/brush.json index 60dbfb0f..4ce27405 100644 --- a/src/main/generated/data/minecraft/item/brush.json +++ b/src/main/generated/data/minecraft/item/brush.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.brush" - }, - "components": { + "behavior": { "minecraft:brush": {}, "minecraft:damageable": { "durability": 64 @@ -21,5 +18,9 @@ "amount": 200 } } + }, + "display": { + "model": "minecraft:brush", + "translation_key": "item.minecraft.brush" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bubble_coral.json b/src/main/generated/data/minecraft/item/bubble_coral.json index 469c3109..799df3ad 100644 --- a/src/main/generated/data/minecraft/item/bubble_coral.json +++ b/src/main/generated/data/minecraft/item/bubble_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bubble_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bubble_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bubble_coral", + "translation_key": "block.minecraft.bubble_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bubble_coral_block.json b/src/main/generated/data/minecraft/item/bubble_coral_block.json index 9dbe2eef..076b9ec1 100644 --- a/src/main/generated/data/minecraft/item/bubble_coral_block.json +++ b/src/main/generated/data/minecraft/item/bubble_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.bubble_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:bubble_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bubble_coral_block", + "translation_key": "block.minecraft.bubble_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bubble_coral_fan.json b/src/main/generated/data/minecraft/item/bubble_coral_fan.json index fac52b8f..cd7532ca 100644 --- a/src/main/generated/data/minecraft/item/bubble_coral_fan.json +++ b/src/main/generated/data/minecraft/item/bubble_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.bubble_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:bubble_coral_fan", + "translation_key": "block.minecraft.bubble_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bucket.json b/src/main/generated/data/minecraft/item/bucket.json index 24518568..6cf016d8 100644 --- a/src/main/generated/data/minecraft/item/bucket.json +++ b/src/main/generated/data/minecraft/item/bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "fluid": "minecraft:empty" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:bucket", + "translation_key": "item.minecraft.bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/budding_amethyst.json b/src/main/generated/data/minecraft/item/budding_amethyst.json index f42dec1f..70d35eac 100644 --- a/src/main/generated/data/minecraft/item/budding_amethyst.json +++ b/src/main/generated/data/minecraft/item/budding_amethyst.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.budding_amethyst" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:budding_amethyst" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:budding_amethyst", + "translation_key": "block.minecraft.budding_amethyst" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/bundle.json b/src/main/generated/data/minecraft/item/bundle.json index 2a79d8b7..99a6b401 100644 --- a/src/main/generated/data/minecraft/item/bundle.json +++ b/src/main/generated/data/minecraft/item/bundle.json @@ -1,9 +1,5 @@ { - "base": { - "item_bar_style": "minecraft:bundle", - "translation_key": "item.minecraft.bundle" - }, - "components": { + "behavior": { "minecraft:item_holder": { "capacity": { "denominator": 1, @@ -45,6 +41,17 @@ } ] }, - "minecraft:stackable": 1 + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:bundle", + "translation_key": "item.minecraft.bundle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/burn_pottery_sherd.json b/src/main/generated/data/minecraft/item/burn_pottery_sherd.json index 83c58f7d..c8fe35f0 100644 --- a/src/main/generated/data/minecraft/item/burn_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/burn_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.burn_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:burn" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:burn_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.burn_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cactus.json b/src/main/generated/data/minecraft/item/cactus.json index 3a76a31c..95cf07f8 100644 --- a/src/main/generated/data/minecraft/item/cactus.json +++ b/src/main/generated/data/minecraft/item/cactus.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cactus" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cactus" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:cactus", + "translation_key": "block.minecraft.cactus" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/cake.json b/src/main/generated/data/minecraft/item/cake.json index 898cdbe8..8e380181 100644 --- a/src/main/generated/data/minecraft/item/cake.json +++ b/src/main/generated/data/minecraft/item/cake.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cake" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cake" }, @@ -10,5 +7,9 @@ "level_increase_chance": 1.0 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cake", + "translation_key": "block.minecraft.cake" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/calcite.json b/src/main/generated/data/minecraft/item/calcite.json index 08af8bd0..9fd77e7d 100644 --- a/src/main/generated/data/minecraft/item/calcite.json +++ b/src/main/generated/data/minecraft/item/calcite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.calcite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:calcite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:calcite", + "translation_key": "block.minecraft.calcite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/calibrated_sculk_sensor.json b/src/main/generated/data/minecraft/item/calibrated_sculk_sensor.json index c5932ec0..772c7b38 100644 --- a/src/main/generated/data/minecraft/item/calibrated_sculk_sensor.json +++ b/src/main/generated/data/minecraft/item/calibrated_sculk_sensor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.calibrated_sculk_sensor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:calibrated_sculk_sensor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:calibrated_sculk_sensor", + "translation_key": "block.minecraft.calibrated_sculk_sensor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/camel_spawn_egg.json b/src/main/generated/data/minecraft/item/camel_spawn_egg.json index 40701bd9..60f9fb22 100644 --- a/src/main/generated/data/minecraft/item/camel_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/camel_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.camel_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:camel_spawn_egg", + "translation_key": "item.minecraft.camel_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/campfire.json b/src/main/generated/data/minecraft/item/campfire.json index c5d2598b..613f722e 100644 --- a/src/main/generated/data/minecraft/item/campfire.json +++ b/src/main/generated/data/minecraft/item/campfire.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.campfire" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:campfire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:campfire", + "translation_key": "block.minecraft.campfire" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/candle.json b/src/main/generated/data/minecraft/item/candle.json index 74b84a5d..b674c513 100644 --- a/src/main/generated/data/minecraft/item/candle.json +++ b/src/main/generated/data/minecraft/item/candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:candle", + "translation_key": "block.minecraft.candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/carrot.json b/src/main/generated/data/minecraft/item/carrot.json index fb31b5ce..10a940c1 100644 --- a/src/main/generated/data/minecraft/item/carrot.json +++ b/src/main/generated/data/minecraft/item/carrot.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.carrot" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:carrots" }, @@ -22,5 +19,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:carrot", + "translation_key": "item.minecraft.carrot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/carrot_on_a_stick.json b/src/main/generated/data/minecraft/item/carrot_on_a_stick.json index 140a457d..4fc8a41d 100644 --- a/src/main/generated/data/minecraft/item/carrot_on_a_stick.json +++ b/src/main/generated/data/minecraft/item/carrot_on_a_stick.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.carrot_on_a_stick" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 25 }, @@ -12,6 +9,10 @@ "target": "minecraft:pig" } }, + "display": { + "model": "minecraft:carrot_on_a_stick", + "translation_key": "item.minecraft.carrot_on_a_stick" + }, "events": { "minecraft:break_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/cartography_table.json b/src/main/generated/data/minecraft/item/cartography_table.json index 8e5101d8..dfc6347f 100644 --- a/src/main/generated/data/minecraft/item/cartography_table.json +++ b/src/main/generated/data/minecraft/item/cartography_table.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cartography_table" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cartography_table" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cartography_table", + "translation_key": "block.minecraft.cartography_table" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/carved_pumpkin.json b/src/main/generated/data/minecraft/item/carved_pumpkin.json index 5a7cfce3..b55dd08f 100644 --- a/src/main/generated/data/minecraft/item/carved_pumpkin.json +++ b/src/main/generated/data/minecraft/item/carved_pumpkin.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.carved_pumpkin" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:carved_pumpkin" }, @@ -13,9 +10,12 @@ "behavior": "minecraft:place_carved_pumpkin" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:carved_pumpkin", + "translation_key": "block.minecraft.carved_pumpkin" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cat_spawn_egg.json b/src/main/generated/data/minecraft/item/cat_spawn_egg.json index d6ef32a8..f01c2214 100644 --- a/src/main/generated/data/minecraft/item/cat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cat_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cat_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:cat_spawn_egg", + "translation_key": "item.minecraft.cat_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cauldron.json b/src/main/generated/data/minecraft/item/cauldron.json index 01b75ab3..a8a50f56 100644 --- a/src/main/generated/data/minecraft/item/cauldron.json +++ b/src/main/generated/data/minecraft/item/cauldron.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cauldron" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cauldron" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cauldron", + "translation_key": "block.minecraft.cauldron" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json b/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json index 265a3377..3bce91ba 100644 --- a/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cave_spider_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cave_spider_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:cave_spider_spawn_egg", + "translation_key": "item.minecraft.cave_spider_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chain.json b/src/main/generated/data/minecraft/item/chain.json index 9c7552a0..20618043 100644 --- a/src/main/generated/data/minecraft/item/chain.json +++ b/src/main/generated/data/minecraft/item/chain.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chain" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chain" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chain", + "translation_key": "block.minecraft.chain" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chain_command_block.json b/src/main/generated/data/minecraft/item/chain_command_block.json index d42a1c10..03844660 100644 --- a/src/main/generated/data/minecraft/item/chain_command_block.json +++ b/src/main/generated/data/minecraft/item/chain_command_block.json @@ -1,13 +1,14 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.chain_command_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chain_command_block", "operator_only": true }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chain_command_block", + "rarity": "epic", + "translation_key": "block.minecraft.chain_command_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chainmail_boots.json b/src/main/generated/data/minecraft/item/chainmail_boots.json index 63a40387..19547ce8 100644 --- a/src/main/generated/data/minecraft/item/chainmail_boots.json +++ b/src/main/generated/data/minecraft/item/chainmail_boots.json @@ -1,11 +1,10 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.chainmail_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:chainmail" + "attribute_id": "minecraft:armor.boots", + "defense": 1, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 195 @@ -18,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", + "model": "minecraft:chainmail", "slot": "feet", "swappable": true }, @@ -25,5 +25,10 @@ "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:chainmail_boots", + "rarity": "uncommon", + "translation_key": "item.minecraft.chainmail_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chainmail_chestplate.json b/src/main/generated/data/minecraft/item/chainmail_chestplate.json index 2c591004..4199e683 100644 --- a/src/main/generated/data/minecraft/item/chainmail_chestplate.json +++ b/src/main/generated/data/minecraft/item/chainmail_chestplate.json @@ -1,11 +1,10 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.chainmail_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:chainmail" + "attribute_id": "minecraft:armor.chestplate", + "defense": 5, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 240 @@ -18,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", + "model": "minecraft:chainmail", "slot": "chest", "swappable": true }, @@ -25,5 +25,10 @@ "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:chainmail_chestplate", + "rarity": "uncommon", + "translation_key": "item.minecraft.chainmail_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chainmail_helmet.json b/src/main/generated/data/minecraft/item/chainmail_helmet.json index b3da8666..8f649c92 100644 --- a/src/main/generated/data/minecraft/item/chainmail_helmet.json +++ b/src/main/generated/data/minecraft/item/chainmail_helmet.json @@ -1,11 +1,10 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.chainmail_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:chainmail" + "attribute_id": "minecraft:armor.helmet", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 165 @@ -18,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", + "model": "minecraft:chainmail", "slot": "head", "swappable": true }, @@ -25,5 +25,10 @@ "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:chainmail_helmet", + "rarity": "uncommon", + "translation_key": "item.minecraft.chainmail_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chainmail_leggings.json b/src/main/generated/data/minecraft/item/chainmail_leggings.json index 8b834e0d..27029266 100644 --- a/src/main/generated/data/minecraft/item/chainmail_leggings.json +++ b/src/main/generated/data/minecraft/item/chainmail_leggings.json @@ -1,11 +1,10 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.chainmail_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:chainmail" + "attribute_id": "minecraft:armor.leggings", + "defense": 4, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 225 @@ -18,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", + "model": "minecraft:chainmail", "slot": "legs", "swappable": true }, @@ -25,5 +25,10 @@ "items": "#minecraft:repairs_chainmail_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:chainmail_leggings", + "rarity": "uncommon", + "translation_key": "item.minecraft.chainmail_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/charcoal.json b/src/main/generated/data/minecraft/item/charcoal.json index 64c0a38f..30255a65 100644 --- a/src/main/generated/data/minecraft/item/charcoal.json +++ b/src/main/generated/data/minecraft/item/charcoal.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.charcoal" - }, - "components": { + "behavior": { "minecraft:fuel": { "ticks": 1600 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:charcoal", + "translation_key": "item.minecraft.charcoal" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_boat.json b/src/main/generated/data/minecraft/item/cherry_boat.json index a29caa4c..eafa45b2 100644 --- a/src/main/generated/data/minecraft/item/cherry_boat.json +++ b/src/main/generated/data/minecraft/item/cherry_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cherry_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cherry_boat", + "translation_key": "item.minecraft.cherry_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_button.json b/src/main/generated/data/minecraft/item/cherry_button.json index 8358ed5c..8fb0e2a3 100644 --- a/src/main/generated/data/minecraft/item/cherry_button.json +++ b/src/main/generated/data/minecraft/item/cherry_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_button", + "translation_key": "block.minecraft.cherry_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_chest_boat.json b/src/main/generated/data/minecraft/item/cherry_chest_boat.json index 50776165..ead1435e 100644 --- a/src/main/generated/data/minecraft/item/cherry_chest_boat.json +++ b/src/main/generated/data/minecraft/item/cherry_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cherry_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cherry_chest_boat", + "translation_key": "item.minecraft.cherry_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_door.json b/src/main/generated/data/minecraft/item/cherry_door.json index 3c288094..d6793efe 100644 --- a/src/main/generated/data/minecraft/item/cherry_door.json +++ b/src/main/generated/data/minecraft/item/cherry_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_door", + "translation_key": "block.minecraft.cherry_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_fence.json b/src/main/generated/data/minecraft/item/cherry_fence.json index e0b7e039..550e43c8 100644 --- a/src/main/generated/data/minecraft/item/cherry_fence.json +++ b/src/main/generated/data/minecraft/item/cherry_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_fence", + "translation_key": "block.minecraft.cherry_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_fence_gate.json b/src/main/generated/data/minecraft/item/cherry_fence_gate.json index c3468304..7d964cd6 100644 --- a/src/main/generated/data/minecraft/item/cherry_fence_gate.json +++ b/src/main/generated/data/minecraft/item/cherry_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_fence_gate", + "translation_key": "block.minecraft.cherry_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_hanging_sign.json b/src/main/generated/data/minecraft/item/cherry_hanging_sign.json index 5f7aef37..b3eb6a88 100644 --- a/src/main/generated/data/minecraft/item/cherry_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/cherry_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:cherry_hanging_sign", + "translation_key": "block.minecraft.cherry_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_leaves.json b/src/main/generated/data/minecraft/item/cherry_leaves.json index a110ab36..1ac93e15 100644 --- a/src/main/generated/data/minecraft/item/cherry_leaves.json +++ b/src/main/generated/data/minecraft/item/cherry_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_leaves" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_leaves", + "translation_key": "block.minecraft.cherry_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_log.json b/src/main/generated/data/minecraft/item/cherry_log.json index 3ac56d24..1357f9fb 100644 --- a/src/main/generated/data/minecraft/item/cherry_log.json +++ b/src/main/generated/data/minecraft/item/cherry_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_log", + "translation_key": "block.minecraft.cherry_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_planks.json b/src/main/generated/data/minecraft/item/cherry_planks.json index 9765f7b6..0f8f3231 100644 --- a/src/main/generated/data/minecraft/item/cherry_planks.json +++ b/src/main/generated/data/minecraft/item/cherry_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_planks", + "translation_key": "block.minecraft.cherry_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_pressure_plate.json b/src/main/generated/data/minecraft/item/cherry_pressure_plate.json index b477af7e..06f042fd 100644 --- a/src/main/generated/data/minecraft/item/cherry_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/cherry_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_pressure_plate", + "translation_key": "block.minecraft.cherry_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_sapling.json b/src/main/generated/data/minecraft/item/cherry_sapling.json index 3668b484..7e7c8c7d 100644 --- a/src/main/generated/data/minecraft/item/cherry_sapling.json +++ b/src/main/generated/data/minecraft/item/cherry_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:cherry_sapling", + "translation_key": "block.minecraft.cherry_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/cherry_sign.json b/src/main/generated/data/minecraft/item/cherry_sign.json index b71552d5..b5823cd9 100644 --- a/src/main/generated/data/minecraft/item/cherry_sign.json +++ b/src/main/generated/data/minecraft/item/cherry_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:cherry_sign", + "translation_key": "block.minecraft.cherry_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_slab.json b/src/main/generated/data/minecraft/item/cherry_slab.json index a7a3d696..e9640911 100644 --- a/src/main/generated/data/minecraft/item/cherry_slab.json +++ b/src/main/generated/data/minecraft/item/cherry_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_slab", + "translation_key": "block.minecraft.cherry_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_stairs.json b/src/main/generated/data/minecraft/item/cherry_stairs.json index 08d342c6..103c9a64 100644 --- a/src/main/generated/data/minecraft/item/cherry_stairs.json +++ b/src/main/generated/data/minecraft/item/cherry_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_stairs", + "translation_key": "block.minecraft.cherry_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_trapdoor.json b/src/main/generated/data/minecraft/item/cherry_trapdoor.json index adeb9dac..2d523bd8 100644 --- a/src/main/generated/data/minecraft/item/cherry_trapdoor.json +++ b/src/main/generated/data/minecraft/item/cherry_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_trapdoor", + "translation_key": "block.minecraft.cherry_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cherry_wood.json b/src/main/generated/data/minecraft/item/cherry_wood.json index c9103808..8e1d21fd 100644 --- a/src/main/generated/data/minecraft/item/cherry_wood.json +++ b/src/main/generated/data/minecraft/item/cherry_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cherry_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cherry_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cherry_wood", + "translation_key": "block.minecraft.cherry_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chest.json b/src/main/generated/data/minecraft/item/chest.json index 1396a901..46b19f18 100644 --- a/src/main/generated/data/minecraft/item/chest.json +++ b/src/main/generated/data/minecraft/item/chest.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.chest" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chest" }, @@ -13,5 +10,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chest", + "translation_key": "block.minecraft.chest" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chest_minecart.json b/src/main/generated/data/minecraft/item/chest_minecart.json index c8577e3f..5cb256e2 100644 --- a/src/main/generated/data/minecraft/item/chest_minecart.json +++ b/src/main/generated/data/minecraft/item/chest_minecart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.chest_minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:chest_minecart", + "translation_key": "item.minecraft.chest_minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chicken.json b/src/main/generated/data/minecraft/item/chicken.json index fa58bd30..7215e8b9 100644 --- a/src/main/generated/data/minecraft/item/chicken.json +++ b/src/main/generated/data/minecraft/item/chicken.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.chicken" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:chicken", + "translation_key": "item.minecraft.chicken" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/chicken_spawn_egg.json b/src/main/generated/data/minecraft/item/chicken_spawn_egg.json index a9c28e0d..7d503187 100644 --- a/src/main/generated/data/minecraft/item/chicken_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/chicken_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.chicken_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:chicken_spawn_egg", + "translation_key": "item.minecraft.chicken_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chipped_anvil.json b/src/main/generated/data/minecraft/item/chipped_anvil.json index 7ed98484..efbed03f 100644 --- a/src/main/generated/data/minecraft/item/chipped_anvil.json +++ b/src/main/generated/data/minecraft/item/chipped_anvil.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chipped_anvil" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chipped_anvil" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chipped_anvil", + "translation_key": "block.minecraft.chipped_anvil" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_bookshelf.json b/src/main/generated/data/minecraft/item/chiseled_bookshelf.json index f12811d6..25c76c50 100644 --- a/src/main/generated/data/minecraft/item/chiseled_bookshelf.json +++ b/src/main/generated/data/minecraft/item/chiseled_bookshelf.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_bookshelf" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_bookshelf" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_bookshelf", + "translation_key": "block.minecraft.chiseled_bookshelf" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_copper.json b/src/main/generated/data/minecraft/item/chiseled_copper.json index e2e478d4..c466f15f 100644 --- a/src/main/generated/data/minecraft/item/chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_copper", + "translation_key": "block.minecraft.chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_deepslate.json b/src/main/generated/data/minecraft/item/chiseled_deepslate.json index 4d3bfba1..0836b669 100644 --- a/src/main/generated/data/minecraft/item/chiseled_deepslate.json +++ b/src/main/generated/data/minecraft/item/chiseled_deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_deepslate", + "translation_key": "block.minecraft.chiseled_deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_nether_bricks.json b/src/main/generated/data/minecraft/item/chiseled_nether_bricks.json index 610b983c..457fc7bb 100644 --- a/src/main/generated/data/minecraft/item/chiseled_nether_bricks.json +++ b/src/main/generated/data/minecraft/item/chiseled_nether_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_nether_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_nether_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_nether_bricks", + "translation_key": "block.minecraft.chiseled_nether_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_polished_blackstone.json b/src/main/generated/data/minecraft/item/chiseled_polished_blackstone.json index 25a2eb4b..7c743343 100644 --- a/src/main/generated/data/minecraft/item/chiseled_polished_blackstone.json +++ b/src/main/generated/data/minecraft/item/chiseled_polished_blackstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_polished_blackstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_polished_blackstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_polished_blackstone", + "translation_key": "block.minecraft.chiseled_polished_blackstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_quartz_block.json b/src/main/generated/data/minecraft/item/chiseled_quartz_block.json index b7444e98..85fa590a 100644 --- a/src/main/generated/data/minecraft/item/chiseled_quartz_block.json +++ b/src/main/generated/data/minecraft/item/chiseled_quartz_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_quartz_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_quartz_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_quartz_block", + "translation_key": "block.minecraft.chiseled_quartz_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_red_sandstone.json b/src/main/generated/data/minecraft/item/chiseled_red_sandstone.json index d7d60689..9918921e 100644 --- a/src/main/generated/data/minecraft/item/chiseled_red_sandstone.json +++ b/src/main/generated/data/minecraft/item/chiseled_red_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_red_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_red_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_red_sandstone", + "translation_key": "block.minecraft.chiseled_red_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_sandstone.json b/src/main/generated/data/minecraft/item/chiseled_sandstone.json index 950c2ec8..154e48e6 100644 --- a/src/main/generated/data/minecraft/item/chiseled_sandstone.json +++ b/src/main/generated/data/minecraft/item/chiseled_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_sandstone", + "translation_key": "block.minecraft.chiseled_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_stone_bricks.json b/src/main/generated/data/minecraft/item/chiseled_stone_bricks.json index b11808e3..a3403827 100644 --- a/src/main/generated/data/minecraft/item/chiseled_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/chiseled_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_stone_bricks", + "translation_key": "block.minecraft.chiseled_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_tuff.json b/src/main/generated/data/minecraft/item/chiseled_tuff.json index 70de83c8..a121b12c 100644 --- a/src/main/generated/data/minecraft/item/chiseled_tuff.json +++ b/src/main/generated/data/minecraft/item/chiseled_tuff.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_tuff" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_tuff" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_tuff", + "translation_key": "block.minecraft.chiseled_tuff" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chiseled_tuff_bricks.json b/src/main/generated/data/minecraft/item/chiseled_tuff_bricks.json index 7edb8750..b2d21aca 100644 --- a/src/main/generated/data/minecraft/item/chiseled_tuff_bricks.json +++ b/src/main/generated/data/minecraft/item/chiseled_tuff_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chiseled_tuff_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chiseled_tuff_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chiseled_tuff_bricks", + "translation_key": "block.minecraft.chiseled_tuff_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chorus_flower.json b/src/main/generated/data/minecraft/item/chorus_flower.json index fccc38db..f5667e5e 100644 --- a/src/main/generated/data/minecraft/item/chorus_flower.json +++ b/src/main/generated/data/minecraft/item/chorus_flower.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chorus_flower" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chorus_flower" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chorus_flower", + "translation_key": "block.minecraft.chorus_flower" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/chorus_fruit.json b/src/main/generated/data/minecraft/item/chorus_fruit.json index 64079247..72bfc611 100644 --- a/src/main/generated/data/minecraft/item/chorus_fruit.json +++ b/src/main/generated/data/minecraft/item/chorus_fruit.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.chorus_fruit" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, @@ -18,6 +15,10 @@ } } }, + "display": { + "model": "minecraft:chorus_fruit", + "translation_key": "item.minecraft.chorus_fruit" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/chorus_plant.json b/src/main/generated/data/minecraft/item/chorus_plant.json index fdb25a88..012d1dfb 100644 --- a/src/main/generated/data/minecraft/item/chorus_plant.json +++ b/src/main/generated/data/minecraft/item/chorus_plant.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.chorus_plant" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:chorus_plant" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:chorus_plant", + "translation_key": "block.minecraft.chorus_plant" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/clay.json b/src/main/generated/data/minecraft/item/clay.json index f1fa7ab2..bb7d18dd 100644 --- a/src/main/generated/data/minecraft/item/clay.json +++ b/src/main/generated/data/minecraft/item/clay.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.clay" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:clay" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:clay", + "translation_key": "block.minecraft.clay" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/clay_ball.json b/src/main/generated/data/minecraft/item/clay_ball.json index 2c7119ba..d9c3d6b5 100644 --- a/src/main/generated/data/minecraft/item/clay_ball.json +++ b/src/main/generated/data/minecraft/item/clay_ball.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.clay_ball" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:clay_ball", + "translation_key": "item.minecraft.clay_ball" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/clock.json b/src/main/generated/data/minecraft/item/clock.json index 883e7cd6..fd343df4 100644 --- a/src/main/generated/data/minecraft/item/clock.json +++ b/src/main/generated/data/minecraft/item/clock.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.clock" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:clock", + "translation_key": "item.minecraft.clock" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coal.json b/src/main/generated/data/minecraft/item/coal.json index 20b1175c..aa7cab09 100644 --- a/src/main/generated/data/minecraft/item/coal.json +++ b/src/main/generated/data/minecraft/item/coal.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.coal" - }, - "components": { + "behavior": { "minecraft:fuel": { "ticks": 1600 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:coal", + "translation_key": "item.minecraft.coal" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coal_block.json b/src/main/generated/data/minecraft/item/coal_block.json index d363a3e5..63d8664a 100644 --- a/src/main/generated/data/minecraft/item/coal_block.json +++ b/src/main/generated/data/minecraft/item/coal_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.coal_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:coal_block" }, @@ -10,5 +7,9 @@ "ticks": 16000 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:coal_block", + "translation_key": "block.minecraft.coal_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coal_ore.json b/src/main/generated/data/minecraft/item/coal_ore.json index 0aba334a..497f3463 100644 --- a/src/main/generated/data/minecraft/item/coal_ore.json +++ b/src/main/generated/data/minecraft/item/coal_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.coal_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:coal_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:coal_ore", + "translation_key": "block.minecraft.coal_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coarse_dirt.json b/src/main/generated/data/minecraft/item/coarse_dirt.json index f281b525..1af723e6 100644 --- a/src/main/generated/data/minecraft/item/coarse_dirt.json +++ b/src/main/generated/data/minecraft/item/coarse_dirt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.coarse_dirt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:coarse_dirt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:coarse_dirt", + "translation_key": "block.minecraft.coarse_dirt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json index f9a42a21..dd1311a9 100644 --- a/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/coast_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.coast_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:coast_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:coast_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.coast_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobbled_deepslate.json b/src/main/generated/data/minecraft/item/cobbled_deepslate.json index 309765d0..a33f8747 100644 --- a/src/main/generated/data/minecraft/item/cobbled_deepslate.json +++ b/src/main/generated/data/minecraft/item/cobbled_deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobbled_deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobbled_deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobbled_deepslate", + "translation_key": "block.minecraft.cobbled_deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobbled_deepslate_slab.json b/src/main/generated/data/minecraft/item/cobbled_deepslate_slab.json index 79a41bee..1ba465bc 100644 --- a/src/main/generated/data/minecraft/item/cobbled_deepslate_slab.json +++ b/src/main/generated/data/minecraft/item/cobbled_deepslate_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobbled_deepslate_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobbled_deepslate_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobbled_deepslate_slab", + "translation_key": "block.minecraft.cobbled_deepslate_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobbled_deepslate_stairs.json b/src/main/generated/data/minecraft/item/cobbled_deepslate_stairs.json index e495de0e..729a8287 100644 --- a/src/main/generated/data/minecraft/item/cobbled_deepslate_stairs.json +++ b/src/main/generated/data/minecraft/item/cobbled_deepslate_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobbled_deepslate_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobbled_deepslate_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobbled_deepslate_stairs", + "translation_key": "block.minecraft.cobbled_deepslate_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobbled_deepslate_wall.json b/src/main/generated/data/minecraft/item/cobbled_deepslate_wall.json index 796b7ae7..eef55e8b 100644 --- a/src/main/generated/data/minecraft/item/cobbled_deepslate_wall.json +++ b/src/main/generated/data/minecraft/item/cobbled_deepslate_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobbled_deepslate_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobbled_deepslate_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobbled_deepslate_wall", + "translation_key": "block.minecraft.cobbled_deepslate_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobblestone.json b/src/main/generated/data/minecraft/item/cobblestone.json index 5561d3c3..cc415912 100644 --- a/src/main/generated/data/minecraft/item/cobblestone.json +++ b/src/main/generated/data/minecraft/item/cobblestone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobblestone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobblestone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobblestone", + "translation_key": "block.minecraft.cobblestone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobblestone_slab.json b/src/main/generated/data/minecraft/item/cobblestone_slab.json index cf4a7d75..55f0fb63 100644 --- a/src/main/generated/data/minecraft/item/cobblestone_slab.json +++ b/src/main/generated/data/minecraft/item/cobblestone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobblestone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobblestone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobblestone_slab", + "translation_key": "block.minecraft.cobblestone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobblestone_stairs.json b/src/main/generated/data/minecraft/item/cobblestone_stairs.json index 59cc470d..0eaf9f6d 100644 --- a/src/main/generated/data/minecraft/item/cobblestone_stairs.json +++ b/src/main/generated/data/minecraft/item/cobblestone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobblestone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobblestone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobblestone_stairs", + "translation_key": "block.minecraft.cobblestone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobblestone_wall.json b/src/main/generated/data/minecraft/item/cobblestone_wall.json index 15a5b397..e899d41c 100644 --- a/src/main/generated/data/minecraft/item/cobblestone_wall.json +++ b/src/main/generated/data/minecraft/item/cobblestone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobblestone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobblestone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobblestone_wall", + "translation_key": "block.minecraft.cobblestone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cobweb.json b/src/main/generated/data/minecraft/item/cobweb.json index 24cc6dac..c75d28fe 100644 --- a/src/main/generated/data/minecraft/item/cobweb.json +++ b/src/main/generated/data/minecraft/item/cobweb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cobweb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cobweb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cobweb", + "translation_key": "block.minecraft.cobweb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cocoa_beans.json b/src/main/generated/data/minecraft/item/cocoa_beans.json index d131764b..064e4a01 100644 --- a/src/main/generated/data/minecraft/item/cocoa_beans.json +++ b/src/main/generated/data/minecraft/item/cocoa_beans.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cocoa_beans" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cocoa" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cocoa_beans", + "translation_key": "item.minecraft.cocoa_beans" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cod.json b/src/main/generated/data/minecraft/item/cod.json index 2b9be5a4..95407174 100644 --- a/src/main/generated/data/minecraft/item/cod.json +++ b/src/main/generated/data/minecraft/item/cod.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cod" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cod", + "translation_key": "item.minecraft.cod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cod_bucket.json b/src/main/generated/data/minecraft/item/cod_bucket.json index 4527cd22..b91bc876 100644 --- a/src/main/generated/data/minecraft/item/cod_bucket.json +++ b/src/main/generated/data/minecraft/item/cod_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cod_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_fish", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cod_bucket", + "translation_key": "item.minecraft.cod_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cod_spawn_egg.json b/src/main/generated/data/minecraft/item/cod_spawn_egg.json index fb08ca9d..b0f5980d 100644 --- a/src/main/generated/data/minecraft/item/cod_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cod_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cod_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:cod_spawn_egg", + "translation_key": "item.minecraft.cod_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/command_block.json b/src/main/generated/data/minecraft/item/command_block.json index 0b3c9cf8..8d0f606c 100644 --- a/src/main/generated/data/minecraft/item/command_block.json +++ b/src/main/generated/data/minecraft/item/command_block.json @@ -1,13 +1,14 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.command_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:command_block", "operator_only": true }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:command_block", + "rarity": "epic", + "translation_key": "block.minecraft.command_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/command_block_minecart.json b/src/main/generated/data/minecraft/item/command_block_minecart.json index 7fffbad3..a607a03b 100644 --- a/src/main/generated/data/minecraft/item/command_block_minecart.json +++ b/src/main/generated/data/minecraft/item/command_block_minecart.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "epic", - "translation_key": "item.minecraft.command_block_minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -13,5 +9,10 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:command_block_minecart", + "rarity": "epic", + "translation_key": "item.minecraft.command_block_minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/comparator.json b/src/main/generated/data/minecraft/item/comparator.json index 290c3536..8c571034 100644 --- a/src/main/generated/data/minecraft/item/comparator.json +++ b/src/main/generated/data/minecraft/item/comparator.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.comparator" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:comparator" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:comparator", + "translation_key": "block.minecraft.comparator" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/compass.json b/src/main/generated/data/minecraft/item/compass.json index 01655093..78adc357 100644 --- a/src/main/generated/data/minecraft/item/compass.json +++ b/src/main/generated/data/minecraft/item/compass.json @@ -1,14 +1,15 @@ { - "base": { - "translation_key": "item.minecraft.compass" - }, - "components": { + "behavior": { "minecraft:pointable": { "lodestone_translation_key": "item.minecraft.lodestone_compass", "points_to": "minecraft:spawn_location" }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:compass", + "translation_key": "item.minecraft.compass" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/composter.json b/src/main/generated/data/minecraft/item/composter.json index 1811f78f..f6711ca7 100644 --- a/src/main/generated/data/minecraft/item/composter.json +++ b/src/main/generated/data/minecraft/item/composter.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.composter" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:composter" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:composter", + "translation_key": "block.minecraft.composter" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/conduit.json b/src/main/generated/data/minecraft/item/conduit.json index 1a6b104e..b3d37214 100644 --- a/src/main/generated/data/minecraft/item/conduit.json +++ b/src/main/generated/data/minecraft/item/conduit.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "block.minecraft.conduit" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:conduit" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:conduit", + "rarity": "rare", + "translation_key": "block.minecraft.conduit" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_beef.json b/src/main/generated/data/minecraft/item/cooked_beef.json index a023b098..4810a4b3 100644 --- a/src/main/generated/data/minecraft/item/cooked_beef.json +++ b/src/main/generated/data/minecraft/item/cooked_beef.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_beef" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 8, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_beef", + "translation_key": "item.minecraft.cooked_beef" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_chicken.json b/src/main/generated/data/minecraft/item/cooked_chicken.json index 68263716..f960944f 100644 --- a/src/main/generated/data/minecraft/item/cooked_chicken.json +++ b/src/main/generated/data/minecraft/item/cooked_chicken.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_chicken" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_chicken", + "translation_key": "item.minecraft.cooked_chicken" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_cod.json b/src/main/generated/data/minecraft/item/cooked_cod.json index 6329e1b5..4c4d5ba0 100644 --- a/src/main/generated/data/minecraft/item/cooked_cod.json +++ b/src/main/generated/data/minecraft/item/cooked_cod.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_cod" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 5, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_cod", + "translation_key": "item.minecraft.cooked_cod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_mutton.json b/src/main/generated/data/minecraft/item/cooked_mutton.json index 7a088c26..f93f37a5 100644 --- a/src/main/generated/data/minecraft/item/cooked_mutton.json +++ b/src/main/generated/data/minecraft/item/cooked_mutton.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_mutton" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_mutton", + "translation_key": "item.minecraft.cooked_mutton" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_porkchop.json b/src/main/generated/data/minecraft/item/cooked_porkchop.json index ba1a3888..c3a85642 100644 --- a/src/main/generated/data/minecraft/item/cooked_porkchop.json +++ b/src/main/generated/data/minecraft/item/cooked_porkchop.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_porkchop" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 8, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_porkchop", + "translation_key": "item.minecraft.cooked_porkchop" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_rabbit.json b/src/main/generated/data/minecraft/item/cooked_rabbit.json index c5f8b05d..db6b1c15 100644 --- a/src/main/generated/data/minecraft/item/cooked_rabbit.json +++ b/src/main/generated/data/minecraft/item/cooked_rabbit.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_rabbit" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 5, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_rabbit", + "translation_key": "item.minecraft.cooked_rabbit" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cooked_salmon.json b/src/main/generated/data/minecraft/item/cooked_salmon.json index 30ede6c9..93009571 100644 --- a/src/main/generated/data/minecraft/item/cooked_salmon.json +++ b/src/main/generated/data/minecraft/item/cooked_salmon.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cooked_salmon" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cooked_salmon", + "translation_key": "item.minecraft.cooked_salmon" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cookie.json b/src/main/generated/data/minecraft/item/cookie.json index 41f98f67..33f59d59 100644 --- a/src/main/generated/data/minecraft/item/cookie.json +++ b/src/main/generated/data/minecraft/item/cookie.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cookie" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.85 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:cookie", + "translation_key": "item.minecraft.cookie" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_block.json b/src/main/generated/data/minecraft/item/copper_block.json index b0d6ae74..bfc609f8 100644 --- a/src/main/generated/data/minecraft/item/copper_block.json +++ b/src/main/generated/data/minecraft/item/copper_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_block", + "translation_key": "block.minecraft.copper_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_bulb.json b/src/main/generated/data/minecraft/item/copper_bulb.json index 43c395dd..85d2e737 100644 --- a/src/main/generated/data/minecraft/item/copper_bulb.json +++ b/src/main/generated/data/minecraft/item/copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_bulb", + "translation_key": "block.minecraft.copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_door.json b/src/main/generated/data/minecraft/item/copper_door.json index 75d57b9f..1fbbea85 100644 --- a/src/main/generated/data/minecraft/item/copper_door.json +++ b/src/main/generated/data/minecraft/item/copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_door", + "translation_key": "block.minecraft.copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_grate.json b/src/main/generated/data/minecraft/item/copper_grate.json index ab6bc70a..8f84e50d 100644 --- a/src/main/generated/data/minecraft/item/copper_grate.json +++ b/src/main/generated/data/minecraft/item/copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_grate", + "translation_key": "block.minecraft.copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_ingot.json b/src/main/generated/data/minecraft/item/copper_ingot.json index ed118413..7ec814f8 100644 --- a/src/main/generated/data/minecraft/item/copper_ingot.json +++ b/src/main/generated/data/minecraft/item/copper_ingot.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.copper_ingot" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_ingot", + "translation_key": "item.minecraft.copper_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_ore.json b/src/main/generated/data/minecraft/item/copper_ore.json index 7efd3c1d..21f8658c 100644 --- a/src/main/generated/data/minecraft/item/copper_ore.json +++ b/src/main/generated/data/minecraft/item/copper_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_ore", + "translation_key": "block.minecraft.copper_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/copper_trapdoor.json b/src/main/generated/data/minecraft/item/copper_trapdoor.json index 61e6cf06..c30d8ca2 100644 --- a/src/main/generated/data/minecraft/item/copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:copper_trapdoor", + "translation_key": "block.minecraft.copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cornflower.json b/src/main/generated/data/minecraft/item/cornflower.json index 7548cf1a..6b08e63a 100644 --- a/src/main/generated/data/minecraft/item/cornflower.json +++ b/src/main/generated/data/minecraft/item/cornflower.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cornflower" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cornflower" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:cornflower", + "translation_key": "block.minecraft.cornflower" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/cow_spawn_egg.json b/src/main/generated/data/minecraft/item/cow_spawn_egg.json index fc45214a..71057f8a 100644 --- a/src/main/generated/data/minecraft/item/cow_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/cow_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.cow_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:cow_spawn_egg", + "translation_key": "item.minecraft.cow_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cracked_deepslate_bricks.json b/src/main/generated/data/minecraft/item/cracked_deepslate_bricks.json index 8f0b74c1..40a8359e 100644 --- a/src/main/generated/data/minecraft/item/cracked_deepslate_bricks.json +++ b/src/main/generated/data/minecraft/item/cracked_deepslate_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cracked_deepslate_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cracked_deepslate_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cracked_deepslate_bricks", + "translation_key": "block.minecraft.cracked_deepslate_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cracked_deepslate_tiles.json b/src/main/generated/data/minecraft/item/cracked_deepslate_tiles.json index 414018eb..6095f2db 100644 --- a/src/main/generated/data/minecraft/item/cracked_deepslate_tiles.json +++ b/src/main/generated/data/minecraft/item/cracked_deepslate_tiles.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cracked_deepslate_tiles" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cracked_deepslate_tiles" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cracked_deepslate_tiles", + "translation_key": "block.minecraft.cracked_deepslate_tiles" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cracked_nether_bricks.json b/src/main/generated/data/minecraft/item/cracked_nether_bricks.json index 6fcedf90..ff028d37 100644 --- a/src/main/generated/data/minecraft/item/cracked_nether_bricks.json +++ b/src/main/generated/data/minecraft/item/cracked_nether_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cracked_nether_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cracked_nether_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cracked_nether_bricks", + "translation_key": "block.minecraft.cracked_nether_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cracked_polished_blackstone_bricks.json b/src/main/generated/data/minecraft/item/cracked_polished_blackstone_bricks.json index 1a6f5f2f..e6a651c9 100644 --- a/src/main/generated/data/minecraft/item/cracked_polished_blackstone_bricks.json +++ b/src/main/generated/data/minecraft/item/cracked_polished_blackstone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cracked_polished_blackstone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cracked_polished_blackstone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cracked_polished_blackstone_bricks", + "translation_key": "block.minecraft.cracked_polished_blackstone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cracked_stone_bricks.json b/src/main/generated/data/minecraft/item/cracked_stone_bricks.json index 2c691229..a38fbabe 100644 --- a/src/main/generated/data/minecraft/item/cracked_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/cracked_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cracked_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cracked_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cracked_stone_bricks", + "translation_key": "block.minecraft.cracked_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crafter.json b/src/main/generated/data/minecraft/item/crafter.json index 642b4639..2898750e 100644 --- a/src/main/generated/data/minecraft/item/crafter.json +++ b/src/main/generated/data/minecraft/item/crafter.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crafter" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crafter" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crafter", + "translation_key": "block.minecraft.crafter" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crafting_table.json b/src/main/generated/data/minecraft/item/crafting_table.json index 673936f2..d102628c 100644 --- a/src/main/generated/data/minecraft/item/crafting_table.json +++ b/src/main/generated/data/minecraft/item/crafting_table.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.crafting_table" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crafting_table" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crafting_table", + "translation_key": "block.minecraft.crafting_table" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/creeper_banner_pattern.json b/src/main/generated/data/minecraft/item/creeper_banner_pattern.json index 22419652..1d8960dc 100644 --- a/src/main/generated/data/minecraft/item/creeper_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/creeper_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.creeper_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/creeper" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:creeper_banner_pattern", + "rarity": "uncommon", + "translation_key": "item.minecraft.creeper_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/creeper_head.json b/src/main/generated/data/minecraft/item/creeper_head.json index f5230770..73c24c0b 100644 --- a/src/main/generated/data/minecraft/item/creeper_head.json +++ b/src/main/generated/data/minecraft/item/creeper_head.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.creeper_head" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:creeper_head", + "rarity": "uncommon", + "translation_key": "block.minecraft.creeper_head" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/creeper_spawn_egg.json b/src/main/generated/data/minecraft/item/creeper_spawn_egg.json index be2e1f76..8803e831 100644 --- a/src/main/generated/data/minecraft/item/creeper_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/creeper_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.creeper_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:creeper_spawn_egg", + "translation_key": "item.minecraft.creeper_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_button.json b/src/main/generated/data/minecraft/item/crimson_button.json index 1dd7f8ed..0dc6b5a7 100644 --- a/src/main/generated/data/minecraft/item/crimson_button.json +++ b/src/main/generated/data/minecraft/item/crimson_button.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_button" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_button", + "translation_key": "block.minecraft.crimson_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_door.json b/src/main/generated/data/minecraft/item/crimson_door.json index 868eeab9..85e475de 100644 --- a/src/main/generated/data/minecraft/item/crimson_door.json +++ b/src/main/generated/data/minecraft/item/crimson_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_door", + "translation_key": "block.minecraft.crimson_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_fence.json b/src/main/generated/data/minecraft/item/crimson_fence.json index 42d88577..b60892be 100644 --- a/src/main/generated/data/minecraft/item/crimson_fence.json +++ b/src/main/generated/data/minecraft/item/crimson_fence.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_fence" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_fence", + "translation_key": "block.minecraft.crimson_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_fence_gate.json b/src/main/generated/data/minecraft/item/crimson_fence_gate.json index 4901eff5..ed5750ad 100644 --- a/src/main/generated/data/minecraft/item/crimson_fence_gate.json +++ b/src/main/generated/data/minecraft/item/crimson_fence_gate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_fence_gate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_fence_gate", + "translation_key": "block.minecraft.crimson_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_fungus.json b/src/main/generated/data/minecraft/item/crimson_fungus.json index 6b4f5d24..d1ff0a12 100644 --- a/src/main/generated/data/minecraft/item/crimson_fungus.json +++ b/src/main/generated/data/minecraft/item/crimson_fungus.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.crimson_fungus" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_fungus" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:crimson_fungus", + "translation_key": "block.minecraft.crimson_fungus" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/crimson_hanging_sign.json b/src/main/generated/data/minecraft/item/crimson_hanging_sign.json index 26df983d..8fdacc22 100644 --- a/src/main/generated/data/minecraft/item/crimson_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/crimson_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.crimson_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:crimson_hanging_sign", + "translation_key": "block.minecraft.crimson_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_hyphae.json b/src/main/generated/data/minecraft/item/crimson_hyphae.json index 9e56e7da..fe92c525 100644 --- a/src/main/generated/data/minecraft/item/crimson_hyphae.json +++ b/src/main/generated/data/minecraft/item/crimson_hyphae.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_hyphae" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_hyphae" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_hyphae", + "translation_key": "block.minecraft.crimson_hyphae" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_nylium.json b/src/main/generated/data/minecraft/item/crimson_nylium.json index 558396e8..5c7fd98f 100644 --- a/src/main/generated/data/minecraft/item/crimson_nylium.json +++ b/src/main/generated/data/minecraft/item/crimson_nylium.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_nylium" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_nylium" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_nylium", + "translation_key": "block.minecraft.crimson_nylium" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_planks.json b/src/main/generated/data/minecraft/item/crimson_planks.json index a6185304..757f86c9 100644 --- a/src/main/generated/data/minecraft/item/crimson_planks.json +++ b/src/main/generated/data/minecraft/item/crimson_planks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_planks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_planks", + "translation_key": "block.minecraft.crimson_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_pressure_plate.json b/src/main/generated/data/minecraft/item/crimson_pressure_plate.json index 9565cc90..071cabf6 100644 --- a/src/main/generated/data/minecraft/item/crimson_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/crimson_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_pressure_plate", + "translation_key": "block.minecraft.crimson_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_roots.json b/src/main/generated/data/minecraft/item/crimson_roots.json index 072d6695..51f5346a 100644 --- a/src/main/generated/data/minecraft/item/crimson_roots.json +++ b/src/main/generated/data/minecraft/item/crimson_roots.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.crimson_roots" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_roots" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:crimson_roots", + "translation_key": "block.minecraft.crimson_roots" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/crimson_sign.json b/src/main/generated/data/minecraft/item/crimson_sign.json index 40b11086..e8659a64 100644 --- a/src/main/generated/data/minecraft/item/crimson_sign.json +++ b/src/main/generated/data/minecraft/item/crimson_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.crimson_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:crimson_sign", + "translation_key": "block.minecraft.crimson_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_slab.json b/src/main/generated/data/minecraft/item/crimson_slab.json index 0d685aa7..8fa2c447 100644 --- a/src/main/generated/data/minecraft/item/crimson_slab.json +++ b/src/main/generated/data/minecraft/item/crimson_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_slab", + "translation_key": "block.minecraft.crimson_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_stairs.json b/src/main/generated/data/minecraft/item/crimson_stairs.json index b42180b4..74280416 100644 --- a/src/main/generated/data/minecraft/item/crimson_stairs.json +++ b/src/main/generated/data/minecraft/item/crimson_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_stairs", + "translation_key": "block.minecraft.crimson_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_stem.json b/src/main/generated/data/minecraft/item/crimson_stem.json index 7da9960c..f06bfa3e 100644 --- a/src/main/generated/data/minecraft/item/crimson_stem.json +++ b/src/main/generated/data/minecraft/item/crimson_stem.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_stem" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_stem" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_stem", + "translation_key": "block.minecraft.crimson_stem" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crimson_trapdoor.json b/src/main/generated/data/minecraft/item/crimson_trapdoor.json index fcbb2865..64e10c55 100644 --- a/src/main/generated/data/minecraft/item/crimson_trapdoor.json +++ b/src/main/generated/data/minecraft/item/crimson_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crimson_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crimson_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crimson_trapdoor", + "translation_key": "block.minecraft.crimson_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crossbow.json b/src/main/generated/data/minecraft/item/crossbow.json index 11f006f1..ca63249c 100644 --- a/src/main/generated/data/minecraft/item/crossbow.json +++ b/src/main/generated/data/minecraft/item/crossbow.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.crossbow" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 465 }, @@ -51,5 +48,9 @@ "type": "minecraft:shooter" } } + }, + "display": { + "model": "minecraft:crossbow", + "translation_key": "item.minecraft.crossbow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/crying_obsidian.json b/src/main/generated/data/minecraft/item/crying_obsidian.json index 4977acd6..2145bb41 100644 --- a/src/main/generated/data/minecraft/item/crying_obsidian.json +++ b/src/main/generated/data/minecraft/item/crying_obsidian.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.crying_obsidian" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:crying_obsidian" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:crying_obsidian", + "translation_key": "block.minecraft.crying_obsidian" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_copper.json b/src/main/generated/data/minecraft/item/cut_copper.json index f705f118..889c78b5 100644 --- a/src/main/generated/data/minecraft/item/cut_copper.json +++ b/src/main/generated/data/minecraft/item/cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_copper", + "translation_key": "block.minecraft.cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_copper_slab.json b/src/main/generated/data/minecraft/item/cut_copper_slab.json index 923c9329..cbc0d77b 100644 --- a/src/main/generated/data/minecraft/item/cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_copper_slab", + "translation_key": "block.minecraft.cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_copper_stairs.json b/src/main/generated/data/minecraft/item/cut_copper_stairs.json index ed1276d4..a7aac831 100644 --- a/src/main/generated/data/minecraft/item/cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_copper_stairs", + "translation_key": "block.minecraft.cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_red_sandstone.json b/src/main/generated/data/minecraft/item/cut_red_sandstone.json index 07e3774d..fa9897bb 100644 --- a/src/main/generated/data/minecraft/item/cut_red_sandstone.json +++ b/src/main/generated/data/minecraft/item/cut_red_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_red_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_red_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_red_sandstone", + "translation_key": "block.minecraft.cut_red_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_red_sandstone_slab.json b/src/main/generated/data/minecraft/item/cut_red_sandstone_slab.json index 0c6f4d68..73466d91 100644 --- a/src/main/generated/data/minecraft/item/cut_red_sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/cut_red_sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_red_sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_red_sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_red_sandstone_slab", + "translation_key": "block.minecraft.cut_red_sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_sandstone.json b/src/main/generated/data/minecraft/item/cut_sandstone.json index 254c1f51..13bf1bad 100644 --- a/src/main/generated/data/minecraft/item/cut_sandstone.json +++ b/src/main/generated/data/minecraft/item/cut_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_sandstone", + "translation_key": "block.minecraft.cut_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cut_sandstone_slab.json b/src/main/generated/data/minecraft/item/cut_sandstone_slab.json index d9291c24..0bf2d358 100644 --- a/src/main/generated/data/minecraft/item/cut_sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/cut_sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cut_sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cut_sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cut_sandstone_slab", + "translation_key": "block.minecraft.cut_sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_banner.json b/src/main/generated/data/minecraft/item/cyan_banner.json index 429fdb9d..3f5da7f7 100644 --- a/src/main/generated/data/minecraft/item/cyan_banner.json +++ b/src/main/generated/data/minecraft/item/cyan_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cyan_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "cyan" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:cyan_banner", + "translation_key": "block.minecraft.cyan_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_bed.json b/src/main/generated/data/minecraft/item/cyan_bed.json index 0c0f5cac..28890119 100644 --- a/src/main/generated/data/minecraft/item/cyan_bed.json +++ b/src/main/generated/data/minecraft/item/cyan_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cyan_bed", + "translation_key": "block.minecraft.cyan_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_candle.json b/src/main/generated/data/minecraft/item/cyan_candle.json index 9fc53ae3..aef7bb90 100644 --- a/src/main/generated/data/minecraft/item/cyan_candle.json +++ b/src/main/generated/data/minecraft/item/cyan_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_candle", + "translation_key": "block.minecraft.cyan_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_carpet.json b/src/main/generated/data/minecraft/item/cyan_carpet.json index 4b7a0c8f..8b10b3de 100644 --- a/src/main/generated/data/minecraft/item/cyan_carpet.json +++ b/src/main/generated/data/minecraft/item/cyan_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cyan_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:cyan_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_carpet", + "translation_key": "block.minecraft.cyan_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_concrete.json b/src/main/generated/data/minecraft/item/cyan_concrete.json index 5a1a639f..b6677d65 100644 --- a/src/main/generated/data/minecraft/item/cyan_concrete.json +++ b/src/main/generated/data/minecraft/item/cyan_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_concrete", + "translation_key": "block.minecraft.cyan_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_concrete_powder.json b/src/main/generated/data/minecraft/item/cyan_concrete_powder.json index f4e5944d..1c1fdc8d 100644 --- a/src/main/generated/data/minecraft/item/cyan_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/cyan_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_concrete_powder", + "translation_key": "block.minecraft.cyan_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_dye.json b/src/main/generated/data/minecraft/item/cyan_dye.json index 6ac22b91..23eaa876 100644 --- a/src/main/generated/data/minecraft/item/cyan_dye.json +++ b/src/main/generated/data/minecraft/item/cyan_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.cyan_dye" - }, - "components": { + "behavior": { "minecraft:dye": "cyan", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_dye", + "translation_key": "item.minecraft.cyan_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_glazed_terracotta.json b/src/main/generated/data/minecraft/item/cyan_glazed_terracotta.json index 999454f0..3c57d9af 100644 --- a/src/main/generated/data/minecraft/item/cyan_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/cyan_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_glazed_terracotta", + "translation_key": "block.minecraft.cyan_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_shulker_box.json b/src/main/generated/data/minecraft/item/cyan_shulker_box.json index f8bb2023..51d59330 100644 --- a/src/main/generated/data/minecraft/item/cyan_shulker_box.json +++ b/src/main/generated/data/minecraft/item/cyan_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cyan_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:cyan_shulker_box", + "translation_key": "block.minecraft.cyan_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_stained_glass.json b/src/main/generated/data/minecraft/item/cyan_stained_glass.json index a36a4d67..ec5807be 100644 --- a/src/main/generated/data/minecraft/item/cyan_stained_glass.json +++ b/src/main/generated/data/minecraft/item/cyan_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_stained_glass", + "translation_key": "block.minecraft.cyan_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_stained_glass_pane.json b/src/main/generated/data/minecraft/item/cyan_stained_glass_pane.json index 63d2b52a..45717059 100644 --- a/src/main/generated/data/minecraft/item/cyan_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/cyan_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_stained_glass_pane", + "translation_key": "block.minecraft.cyan_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_terracotta.json b/src/main/generated/data/minecraft/item/cyan_terracotta.json index 0c2da5d8..dc691881 100644 --- a/src/main/generated/data/minecraft/item/cyan_terracotta.json +++ b/src/main/generated/data/minecraft/item/cyan_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.cyan_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_terracotta", + "translation_key": "block.minecraft.cyan_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_wool.json b/src/main/generated/data/minecraft/item/cyan_wool.json index 3961af9b..810a68f1 100644 --- a/src/main/generated/data/minecraft/item/cyan_wool.json +++ b/src/main/generated/data/minecraft/item/cyan_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.cyan_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cyan_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:cyan_wool", + "translation_key": "block.minecraft.cyan_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/damaged_anvil.json b/src/main/generated/data/minecraft/item/damaged_anvil.json index bf5aa04f..642c90a6 100644 --- a/src/main/generated/data/minecraft/item/damaged_anvil.json +++ b/src/main/generated/data/minecraft/item/damaged_anvil.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.damaged_anvil" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:damaged_anvil" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:damaged_anvil", + "translation_key": "block.minecraft.damaged_anvil" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dandelion.json b/src/main/generated/data/minecraft/item/dandelion.json index 68fc40bc..57880c15 100644 --- a/src/main/generated/data/minecraft/item/dandelion.json +++ b/src/main/generated/data/minecraft/item/dandelion.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dandelion" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dandelion" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:dandelion", + "translation_key": "block.minecraft.dandelion" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/danger_pottery_sherd.json b/src/main/generated/data/minecraft/item/danger_pottery_sherd.json index 4fa5a2e7..ffb3c533 100644 --- a/src/main/generated/data/minecraft/item/danger_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/danger_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.danger_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:danger" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:danger_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.danger_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_boat.json b/src/main/generated/data/minecraft/item/dark_oak_boat.json index f4be62ac..98f6be47 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_boat.json +++ b/src/main/generated/data/minecraft/item/dark_oak_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.dark_oak_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:dark_oak_boat", + "translation_key": "item.minecraft.dark_oak_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_button.json b/src/main/generated/data/minecraft/item/dark_oak_button.json index 23af6146..8e4d3ffa 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_button.json +++ b/src/main/generated/data/minecraft/item/dark_oak_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_button", + "translation_key": "block.minecraft.dark_oak_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json b/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json index 7ab89be8..a0a29106 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json +++ b/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.dark_oak_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:dark_oak_chest_boat", + "translation_key": "item.minecraft.dark_oak_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_door.json b/src/main/generated/data/minecraft/item/dark_oak_door.json index fb8742b7..ea769a61 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_door.json +++ b/src/main/generated/data/minecraft/item/dark_oak_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_door", + "translation_key": "block.minecraft.dark_oak_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_fence.json b/src/main/generated/data/minecraft/item/dark_oak_fence.json index 122ca048..35bdb706 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_fence.json +++ b/src/main/generated/data/minecraft/item/dark_oak_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_fence", + "translation_key": "block.minecraft.dark_oak_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_fence_gate.json b/src/main/generated/data/minecraft/item/dark_oak_fence_gate.json index fd5d2300..32c621df 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_fence_gate.json +++ b/src/main/generated/data/minecraft/item/dark_oak_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_fence_gate", + "translation_key": "block.minecraft.dark_oak_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_hanging_sign.json b/src/main/generated/data/minecraft/item/dark_oak_hanging_sign.json index 5b906d7f..3143bd91 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/dark_oak_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:dark_oak_hanging_sign", + "translation_key": "block.minecraft.dark_oak_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_leaves.json b/src/main/generated/data/minecraft/item/dark_oak_leaves.json index 8f5dee3b..c05af1ef 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_leaves.json +++ b/src/main/generated/data/minecraft/item/dark_oak_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_leaves" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:dark_oak_leaves", + "translation_key": "block.minecraft.dark_oak_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_log.json b/src/main/generated/data/minecraft/item/dark_oak_log.json index cf0d39d0..67531123 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_log.json +++ b/src/main/generated/data/minecraft/item/dark_oak_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_log", + "translation_key": "block.minecraft.dark_oak_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_planks.json b/src/main/generated/data/minecraft/item/dark_oak_planks.json index fa9d6918..fc873d00 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_planks.json +++ b/src/main/generated/data/minecraft/item/dark_oak_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_planks", + "translation_key": "block.minecraft.dark_oak_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_pressure_plate.json b/src/main/generated/data/minecraft/item/dark_oak_pressure_plate.json index 8dfa2398..3a2df35d 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/dark_oak_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_pressure_plate", + "translation_key": "block.minecraft.dark_oak_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_sapling.json b/src/main/generated/data/minecraft/item/dark_oak_sapling.json index 5d138d18..5c923d87 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_sapling.json +++ b/src/main/generated/data/minecraft/item/dark_oak_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:dark_oak_sapling", + "translation_key": "block.minecraft.dark_oak_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/dark_oak_sign.json b/src/main/generated/data/minecraft/item/dark_oak_sign.json index 3dc0cfaa..7d773566 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_sign.json +++ b/src/main/generated/data/minecraft/item/dark_oak_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:dark_oak_sign", + "translation_key": "block.minecraft.dark_oak_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_slab.json b/src/main/generated/data/minecraft/item/dark_oak_slab.json index c58e3690..d99b806b 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_slab.json +++ b/src/main/generated/data/minecraft/item/dark_oak_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_slab", + "translation_key": "block.minecraft.dark_oak_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_stairs.json b/src/main/generated/data/minecraft/item/dark_oak_stairs.json index 11970d9e..eedfeb10 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_stairs.json +++ b/src/main/generated/data/minecraft/item/dark_oak_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_stairs", + "translation_key": "block.minecraft.dark_oak_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_trapdoor.json b/src/main/generated/data/minecraft/item/dark_oak_trapdoor.json index 7c68234c..3e96c87c 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_trapdoor.json +++ b/src/main/generated/data/minecraft/item/dark_oak_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_trapdoor", + "translation_key": "block.minecraft.dark_oak_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_oak_wood.json b/src/main/generated/data/minecraft/item/dark_oak_wood.json index d86ba6f7..49047d0b 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_wood.json +++ b/src/main/generated/data/minecraft/item/dark_oak_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dark_oak_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_oak_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_oak_wood", + "translation_key": "block.minecraft.dark_oak_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_prismarine.json b/src/main/generated/data/minecraft/item/dark_prismarine.json index 25706fd7..1c769c8c 100644 --- a/src/main/generated/data/minecraft/item/dark_prismarine.json +++ b/src/main/generated/data/minecraft/item/dark_prismarine.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dark_prismarine" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_prismarine" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_prismarine", + "translation_key": "block.minecraft.dark_prismarine" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_prismarine_slab.json b/src/main/generated/data/minecraft/item/dark_prismarine_slab.json index ca1f8b37..bb09624f 100644 --- a/src/main/generated/data/minecraft/item/dark_prismarine_slab.json +++ b/src/main/generated/data/minecraft/item/dark_prismarine_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dark_prismarine_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_prismarine_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_prismarine_slab", + "translation_key": "block.minecraft.dark_prismarine_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dark_prismarine_stairs.json b/src/main/generated/data/minecraft/item/dark_prismarine_stairs.json index 7cffc046..a0ac662b 100644 --- a/src/main/generated/data/minecraft/item/dark_prismarine_stairs.json +++ b/src/main/generated/data/minecraft/item/dark_prismarine_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dark_prismarine_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dark_prismarine_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dark_prismarine_stairs", + "translation_key": "block.minecraft.dark_prismarine_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/daylight_detector.json b/src/main/generated/data/minecraft/item/daylight_detector.json index 4062e2dc..31187311 100644 --- a/src/main/generated/data/minecraft/item/daylight_detector.json +++ b/src/main/generated/data/minecraft/item/daylight_detector.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.daylight_detector" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:daylight_detector" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:daylight_detector", + "translation_key": "block.minecraft.daylight_detector" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_brain_coral.json b/src/main/generated/data/minecraft/item/dead_brain_coral.json index 1cbdc2f9..9eb979ff 100644 --- a/src/main/generated/data/minecraft/item/dead_brain_coral.json +++ b/src/main/generated/data/minecraft/item/dead_brain_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_brain_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_brain_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_brain_coral", + "translation_key": "block.minecraft.dead_brain_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_brain_coral_block.json b/src/main/generated/data/minecraft/item/dead_brain_coral_block.json index b3774dae..306dedab 100644 --- a/src/main/generated/data/minecraft/item/dead_brain_coral_block.json +++ b/src/main/generated/data/minecraft/item/dead_brain_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_brain_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_brain_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_brain_coral_block", + "translation_key": "block.minecraft.dead_brain_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_brain_coral_fan.json b/src/main/generated/data/minecraft/item/dead_brain_coral_fan.json index d1c17ce4..3326e20d 100644 --- a/src/main/generated/data/minecraft/item/dead_brain_coral_fan.json +++ b/src/main/generated/data/minecraft/item/dead_brain_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_brain_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_brain_coral_fan", + "translation_key": "block.minecraft.dead_brain_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_bubble_coral.json b/src/main/generated/data/minecraft/item/dead_bubble_coral.json index ea54c3a9..653a12ea 100644 --- a/src/main/generated/data/minecraft/item/dead_bubble_coral.json +++ b/src/main/generated/data/minecraft/item/dead_bubble_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_bubble_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_bubble_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_bubble_coral", + "translation_key": "block.minecraft.dead_bubble_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_bubble_coral_block.json b/src/main/generated/data/minecraft/item/dead_bubble_coral_block.json index e3f036f9..99769551 100644 --- a/src/main/generated/data/minecraft/item/dead_bubble_coral_block.json +++ b/src/main/generated/data/minecraft/item/dead_bubble_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_bubble_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_bubble_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_bubble_coral_block", + "translation_key": "block.minecraft.dead_bubble_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_bubble_coral_fan.json b/src/main/generated/data/minecraft/item/dead_bubble_coral_fan.json index ab0d0e9f..99e05529 100644 --- a/src/main/generated/data/minecraft/item/dead_bubble_coral_fan.json +++ b/src/main/generated/data/minecraft/item/dead_bubble_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_bubble_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_bubble_coral_fan", + "translation_key": "block.minecraft.dead_bubble_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_bush.json b/src/main/generated/data/minecraft/item/dead_bush.json index 2118f628..a23629e5 100644 --- a/src/main/generated/data/minecraft/item/dead_bush.json +++ b/src/main/generated/data/minecraft/item/dead_bush.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_bush" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_bush" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:dead_bush", + "translation_key": "block.minecraft.dead_bush" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/dead_fire_coral.json b/src/main/generated/data/minecraft/item/dead_fire_coral.json index 6f84bb0f..c1bf3d12 100644 --- a/src/main/generated/data/minecraft/item/dead_fire_coral.json +++ b/src/main/generated/data/minecraft/item/dead_fire_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_fire_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_fire_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_fire_coral", + "translation_key": "block.minecraft.dead_fire_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_fire_coral_block.json b/src/main/generated/data/minecraft/item/dead_fire_coral_block.json index 56ba6fb8..2d121d87 100644 --- a/src/main/generated/data/minecraft/item/dead_fire_coral_block.json +++ b/src/main/generated/data/minecraft/item/dead_fire_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_fire_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_fire_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_fire_coral_block", + "translation_key": "block.minecraft.dead_fire_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_fire_coral_fan.json b/src/main/generated/data/minecraft/item/dead_fire_coral_fan.json index cc3988e3..8584cbff 100644 --- a/src/main/generated/data/minecraft/item/dead_fire_coral_fan.json +++ b/src/main/generated/data/minecraft/item/dead_fire_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_fire_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_fire_coral_fan", + "translation_key": "block.minecraft.dead_fire_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_horn_coral.json b/src/main/generated/data/minecraft/item/dead_horn_coral.json index 6afda3a3..da1bdaf2 100644 --- a/src/main/generated/data/minecraft/item/dead_horn_coral.json +++ b/src/main/generated/data/minecraft/item/dead_horn_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_horn_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_horn_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_horn_coral", + "translation_key": "block.minecraft.dead_horn_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_horn_coral_block.json b/src/main/generated/data/minecraft/item/dead_horn_coral_block.json index 2842b92d..33c85583 100644 --- a/src/main/generated/data/minecraft/item/dead_horn_coral_block.json +++ b/src/main/generated/data/minecraft/item/dead_horn_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_horn_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_horn_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_horn_coral_block", + "translation_key": "block.minecraft.dead_horn_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_horn_coral_fan.json b/src/main/generated/data/minecraft/item/dead_horn_coral_fan.json index 780e5b7d..a6ff2e44 100644 --- a/src/main/generated/data/minecraft/item/dead_horn_coral_fan.json +++ b/src/main/generated/data/minecraft/item/dead_horn_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_horn_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_horn_coral_fan", + "translation_key": "block.minecraft.dead_horn_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_tube_coral.json b/src/main/generated/data/minecraft/item/dead_tube_coral.json index 43eea3a7..a1b5ca14 100644 --- a/src/main/generated/data/minecraft/item/dead_tube_coral.json +++ b/src/main/generated/data/minecraft/item/dead_tube_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_tube_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_tube_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_tube_coral", + "translation_key": "block.minecraft.dead_tube_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_tube_coral_block.json b/src/main/generated/data/minecraft/item/dead_tube_coral_block.json index 8ff2e47a..71d019f0 100644 --- a/src/main/generated/data/minecraft/item/dead_tube_coral_block.json +++ b/src/main/generated/data/minecraft/item/dead_tube_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dead_tube_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dead_tube_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_tube_coral_block", + "translation_key": "block.minecraft.dead_tube_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dead_tube_coral_fan.json b/src/main/generated/data/minecraft/item/dead_tube_coral_fan.json index 888a491f..4694d4ee 100644 --- a/src/main/generated/data/minecraft/item/dead_tube_coral_fan.json +++ b/src/main/generated/data/minecraft/item/dead_tube_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dead_tube_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dead_tube_coral_fan", + "translation_key": "block.minecraft.dead_tube_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/debug_stick.json b/src/main/generated/data/minecraft/item/debug_stick.json index 23a9a922..74ed881d 100644 --- a/src/main/generated/data/minecraft/item/debug_stick.json +++ b/src/main/generated/data/minecraft/item/debug_stick.json @@ -1,11 +1,12 @@ { - "base": { + "behavior": { + "minecraft:debug_stick": {}, + "minecraft:stackable": 1 + }, + "display": { "glint": true, + "model": "minecraft:debug_stick", "rarity": "epic", "translation_key": "item.minecraft.debug_stick" - }, - "components": { - "minecraft:debug_stick": {}, - "minecraft:stackable": 1 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/decorated_pot.json b/src/main/generated/data/minecraft/item/decorated_pot.json index 9dbc0b5c..ce142baa 100644 --- a/src/main/generated/data/minecraft/item/decorated_pot.json +++ b/src/main/generated/data/minecraft/item/decorated_pot.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.decorated_pot" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:decorated_pot" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:decorated_pot", + "translation_key": "block.minecraft.decorated_pot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate.json b/src/main/generated/data/minecraft/item/deepslate.json index 443238d5..b1d53fa5 100644 --- a/src/main/generated/data/minecraft/item/deepslate.json +++ b/src/main/generated/data/minecraft/item/deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate", + "translation_key": "block.minecraft.deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_brick_slab.json b/src/main/generated/data/minecraft/item/deepslate_brick_slab.json index 479195a8..d567e1e4 100644 --- a/src/main/generated/data/minecraft/item/deepslate_brick_slab.json +++ b/src/main/generated/data/minecraft/item/deepslate_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_brick_slab", + "translation_key": "block.minecraft.deepslate_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_brick_stairs.json b/src/main/generated/data/minecraft/item/deepslate_brick_stairs.json index 5aa5eb47..a46be5c9 100644 --- a/src/main/generated/data/minecraft/item/deepslate_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/deepslate_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_brick_stairs", + "translation_key": "block.minecraft.deepslate_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_brick_wall.json b/src/main/generated/data/minecraft/item/deepslate_brick_wall.json index 274be241..78ea57d9 100644 --- a/src/main/generated/data/minecraft/item/deepslate_brick_wall.json +++ b/src/main/generated/data/minecraft/item/deepslate_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_brick_wall", + "translation_key": "block.minecraft.deepslate_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_bricks.json b/src/main/generated/data/minecraft/item/deepslate_bricks.json index c0b4ec80..c38fe138 100644 --- a/src/main/generated/data/minecraft/item/deepslate_bricks.json +++ b/src/main/generated/data/minecraft/item/deepslate_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_bricks", + "translation_key": "block.minecraft.deepslate_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_coal_ore.json b/src/main/generated/data/minecraft/item/deepslate_coal_ore.json index 147ce164..05066910 100644 --- a/src/main/generated/data/minecraft/item/deepslate_coal_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_coal_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_coal_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_coal_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_coal_ore", + "translation_key": "block.minecraft.deepslate_coal_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_copper_ore.json b/src/main/generated/data/minecraft/item/deepslate_copper_ore.json index c56ea630..490535e2 100644 --- a/src/main/generated/data/minecraft/item/deepslate_copper_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_copper_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_copper_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_copper_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_copper_ore", + "translation_key": "block.minecraft.deepslate_copper_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_diamond_ore.json b/src/main/generated/data/minecraft/item/deepslate_diamond_ore.json index 2981bca7..67cbb96e 100644 --- a/src/main/generated/data/minecraft/item/deepslate_diamond_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_diamond_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_diamond_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_diamond_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_diamond_ore", + "translation_key": "block.minecraft.deepslate_diamond_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_emerald_ore.json b/src/main/generated/data/minecraft/item/deepslate_emerald_ore.json index 3a347ead..e3d6481c 100644 --- a/src/main/generated/data/minecraft/item/deepslate_emerald_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_emerald_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_emerald_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_emerald_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_emerald_ore", + "translation_key": "block.minecraft.deepslate_emerald_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_gold_ore.json b/src/main/generated/data/minecraft/item/deepslate_gold_ore.json index 384ebc9b..08e74b78 100644 --- a/src/main/generated/data/minecraft/item/deepslate_gold_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_gold_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_gold_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_gold_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_gold_ore", + "translation_key": "block.minecraft.deepslate_gold_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_iron_ore.json b/src/main/generated/data/minecraft/item/deepslate_iron_ore.json index d6e344ea..8cff4bdc 100644 --- a/src/main/generated/data/minecraft/item/deepslate_iron_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_iron_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_iron_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_iron_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_iron_ore", + "translation_key": "block.minecraft.deepslate_iron_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_lapis_ore.json b/src/main/generated/data/minecraft/item/deepslate_lapis_ore.json index cfd8905f..faf94758 100644 --- a/src/main/generated/data/minecraft/item/deepslate_lapis_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_lapis_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_lapis_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_lapis_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_lapis_ore", + "translation_key": "block.minecraft.deepslate_lapis_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_redstone_ore.json b/src/main/generated/data/minecraft/item/deepslate_redstone_ore.json index e1101f4b..252794dc 100644 --- a/src/main/generated/data/minecraft/item/deepslate_redstone_ore.json +++ b/src/main/generated/data/minecraft/item/deepslate_redstone_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_redstone_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_redstone_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_redstone_ore", + "translation_key": "block.minecraft.deepslate_redstone_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_tile_slab.json b/src/main/generated/data/minecraft/item/deepslate_tile_slab.json index 97c9fd68..295a339b 100644 --- a/src/main/generated/data/minecraft/item/deepslate_tile_slab.json +++ b/src/main/generated/data/minecraft/item/deepslate_tile_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_tile_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_tile_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_tile_slab", + "translation_key": "block.minecraft.deepslate_tile_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_tile_stairs.json b/src/main/generated/data/minecraft/item/deepslate_tile_stairs.json index 3fb44967..b608af66 100644 --- a/src/main/generated/data/minecraft/item/deepslate_tile_stairs.json +++ b/src/main/generated/data/minecraft/item/deepslate_tile_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_tile_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_tile_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_tile_stairs", + "translation_key": "block.minecraft.deepslate_tile_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_tile_wall.json b/src/main/generated/data/minecraft/item/deepslate_tile_wall.json index 5b652450..1f8512c0 100644 --- a/src/main/generated/data/minecraft/item/deepslate_tile_wall.json +++ b/src/main/generated/data/minecraft/item/deepslate_tile_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_tile_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_tile_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_tile_wall", + "translation_key": "block.minecraft.deepslate_tile_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/deepslate_tiles.json b/src/main/generated/data/minecraft/item/deepslate_tiles.json index 8abdf096..d8b36418 100644 --- a/src/main/generated/data/minecraft/item/deepslate_tiles.json +++ b/src/main/generated/data/minecraft/item/deepslate_tiles.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.deepslate_tiles" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:deepslate_tiles" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:deepslate_tiles", + "translation_key": "block.minecraft.deepslate_tiles" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/detector_rail.json b/src/main/generated/data/minecraft/item/detector_rail.json index 3ff4ec30..1f76f0f5 100644 --- a/src/main/generated/data/minecraft/item/detector_rail.json +++ b/src/main/generated/data/minecraft/item/detector_rail.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.detector_rail" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:detector_rail" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:detector_rail", + "translation_key": "block.minecraft.detector_rail" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond.json b/src/main/generated/data/minecraft/item/diamond.json index e66a1805..aa2da596 100644 --- a/src/main/generated/data/minecraft/item/diamond.json +++ b/src/main/generated/data/minecraft/item/diamond.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.diamond" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diamond", + "translation_key": "item.minecraft.diamond" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_axe.json b/src/main/generated/data/minecraft/item/diamond_axe.json index aed28271..c704e4ac 100644 --- a/src/main/generated/data/minecraft/item/diamond_axe.json +++ b/src/main/generated/data/minecraft/item/diamond_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.diamond_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 1561 }, @@ -34,5 +31,9 @@ "attack_speed": 0.25, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:diamond_axe", + "translation_key": "item.minecraft.diamond_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_block.json b/src/main/generated/data/minecraft/item/diamond_block.json index 75111696..9b5fd71f 100644 --- a/src/main/generated/data/minecraft/item/diamond_block.json +++ b/src/main/generated/data/minecraft/item/diamond_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diamond_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diamond_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diamond_block", + "translation_key": "block.minecraft.diamond_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_boots.json b/src/main/generated/data/minecraft/item/diamond_boots.json index cff0281b..c43dfb7a 100644 --- a/src/main/generated/data/minecraft/item/diamond_boots.json +++ b/src/main/generated/data/minecraft/item/diamond_boots.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.diamond_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:diamond" + "attribute_id": "minecraft:armor.boots", + "defense": 3, + "knockback_resistance": 0.0, + "toughness": 2.0 }, "minecraft:damageable": { "durability": 429 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", + "model": "minecraft:diamond", "slot": "feet", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:diamond_boots", + "translation_key": "item.minecraft.diamond_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_chestplate.json b/src/main/generated/data/minecraft/item/diamond_chestplate.json index ea1b0ebb..8d3f73a7 100644 --- a/src/main/generated/data/minecraft/item/diamond_chestplate.json +++ b/src/main/generated/data/minecraft/item/diamond_chestplate.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.diamond_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:diamond" + "attribute_id": "minecraft:armor.chestplate", + "defense": 8, + "knockback_resistance": 0.0, + "toughness": 2.0 }, "minecraft:damageable": { "durability": 528 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", + "model": "minecraft:diamond", "slot": "chest", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:diamond_chestplate", + "translation_key": "item.minecraft.diamond_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_helmet.json b/src/main/generated/data/minecraft/item/diamond_helmet.json index 9f43b2a5..01b4820e 100644 --- a/src/main/generated/data/minecraft/item/diamond_helmet.json +++ b/src/main/generated/data/minecraft/item/diamond_helmet.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.diamond_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:diamond" + "attribute_id": "minecraft:armor.helmet", + "defense": 3, + "knockback_resistance": 0.0, + "toughness": 2.0 }, "minecraft:damageable": { "durability": 363 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", + "model": "minecraft:diamond", "slot": "head", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:diamond_helmet", + "translation_key": "item.minecraft.diamond_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_hoe.json b/src/main/generated/data/minecraft/item/diamond_hoe.json index 38dd8118..2d1cca75 100644 --- a/src/main/generated/data/minecraft/item/diamond_hoe.json +++ b/src/main/generated/data/minecraft/item/diamond_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.diamond_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 1561 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:diamond_hoe", + "translation_key": "item.minecraft.diamond_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/diamond_horse_armor.json b/src/main/generated/data/minecraft/item/diamond_horse_armor.json index 605cbd31..3afd0e18 100644 --- a/src/main/generated/data/minecraft/item/diamond_horse_armor.json +++ b/src/main/generated/data/minecraft/item/diamond_horse_armor.json @@ -1,19 +1,29 @@ { - "base": { - "translation_key": "item.minecraft.diamond_horse_armor" - }, - "components": { + "behavior": { "minecraft:armor": { - "armor_type": "equestrian", - "material": "minecraft:diamond" + "attribute_id": "minecraft:armor.body", + "defense": 11, + "knockback_resistance": 0.0, + "toughness": 2.0 + }, + "minecraft:damageable": { + "break_sound": "minecraft:entity.item.break", + "durability": 528 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { + "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_diamond", - "slot": "body" + "model": "minecraft:diamond", + "slot": "body", + "swappable": true }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:diamond_horse_armor", + "translation_key": "item.minecraft.diamond_horse_armor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_leggings.json b/src/main/generated/data/minecraft/item/diamond_leggings.json index c73e555e..182c5bb9 100644 --- a/src/main/generated/data/minecraft/item/diamond_leggings.json +++ b/src/main/generated/data/minecraft/item/diamond_leggings.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.diamond_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:diamond" + "attribute_id": "minecraft:armor.leggings", + "defense": 6, + "knockback_resistance": 0.0, + "toughness": 2.0 }, "minecraft:damageable": { "durability": 495 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", + "model": "minecraft:diamond", "slot": "legs", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_diamond_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:diamond_leggings", + "translation_key": "item.minecraft.diamond_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_ore.json b/src/main/generated/data/minecraft/item/diamond_ore.json index bdf1bbe0..bd69408f 100644 --- a/src/main/generated/data/minecraft/item/diamond_ore.json +++ b/src/main/generated/data/minecraft/item/diamond_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diamond_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diamond_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diamond_ore", + "translation_key": "block.minecraft.diamond_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_pickaxe.json b/src/main/generated/data/minecraft/item/diamond_pickaxe.json index 94a71687..0e2a1e0f 100644 --- a/src/main/generated/data/minecraft/item/diamond_pickaxe.json +++ b/src/main/generated/data/minecraft/item/diamond_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.diamond_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 1561 }, @@ -34,5 +31,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:diamond_pickaxe", + "translation_key": "item.minecraft.diamond_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diamond_shovel.json b/src/main/generated/data/minecraft/item/diamond_shovel.json index 9f5899aa..6878e057 100644 --- a/src/main/generated/data/minecraft/item/diamond_shovel.json +++ b/src/main/generated/data/minecraft/item/diamond_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.diamond_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 1561 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:diamond_shovel", + "translation_key": "item.minecraft.diamond_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/diamond_sword.json b/src/main/generated/data/minecraft/item/diamond_sword.json index be5c5e84..97eaaf27 100644 --- a/src/main/generated/data/minecraft/item/diamond_sword.json +++ b/src/main/generated/data/minecraft/item/diamond_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.diamond_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 1561 }, @@ -34,5 +31,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:diamond_sword", + "translation_key": "item.minecraft.diamond_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diorite.json b/src/main/generated/data/minecraft/item/diorite.json index be309777..6f61bb45 100644 --- a/src/main/generated/data/minecraft/item/diorite.json +++ b/src/main/generated/data/minecraft/item/diorite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diorite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diorite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diorite", + "translation_key": "block.minecraft.diorite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diorite_slab.json b/src/main/generated/data/minecraft/item/diorite_slab.json index 37f15c67..48b42c73 100644 --- a/src/main/generated/data/minecraft/item/diorite_slab.json +++ b/src/main/generated/data/minecraft/item/diorite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diorite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diorite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diorite_slab", + "translation_key": "block.minecraft.diorite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diorite_stairs.json b/src/main/generated/data/minecraft/item/diorite_stairs.json index 7190b93e..ce40dada 100644 --- a/src/main/generated/data/minecraft/item/diorite_stairs.json +++ b/src/main/generated/data/minecraft/item/diorite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diorite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diorite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diorite_stairs", + "translation_key": "block.minecraft.diorite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/diorite_wall.json b/src/main/generated/data/minecraft/item/diorite_wall.json index e0c50ea7..a0b5a793 100644 --- a/src/main/generated/data/minecraft/item/diorite_wall.json +++ b/src/main/generated/data/minecraft/item/diorite_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.diorite_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:diorite_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:diorite_wall", + "translation_key": "block.minecraft.diorite_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dirt.json b/src/main/generated/data/minecraft/item/dirt.json index fec11870..bc2aae96 100644 --- a/src/main/generated/data/minecraft/item/dirt.json +++ b/src/main/generated/data/minecraft/item/dirt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dirt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dirt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dirt", + "translation_key": "block.minecraft.dirt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dirt_path.json b/src/main/generated/data/minecraft/item/dirt_path.json index 9c855507..1814fde2 100644 --- a/src/main/generated/data/minecraft/item/dirt_path.json +++ b/src/main/generated/data/minecraft/item/dirt_path.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dirt_path" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dirt_path" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dirt_path", + "translation_key": "block.minecraft.dirt_path" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/disc_fragment_5.json b/src/main/generated/data/minecraft/item/disc_fragment_5.json index c8ad8058..6135b0f6 100644 --- a/src/main/generated/data/minecraft/item/disc_fragment_5.json +++ b/src/main/generated/data/minecraft/item/disc_fragment_5.json @@ -1,5 +1,9 @@ { - "base": { + "behavior": { + "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:disc_fragment_5", "rarity": "uncommon", "tooltip": [ { @@ -8,8 +12,5 @@ } ], "translation_key": "item.minecraft.disc_fragment_5" - }, - "components": { - "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dispenser.json b/src/main/generated/data/minecraft/item/dispenser.json index a69f6e77..04b5e98e 100644 --- a/src/main/generated/data/minecraft/item/dispenser.json +++ b/src/main/generated/data/minecraft/item/dispenser.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dispenser" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dispenser" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dispenser", + "translation_key": "block.minecraft.dispenser" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json b/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json index 4adb1377..a33aa5d1 100644 --- a/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/dolphin_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.dolphin_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:dolphin_spawn_egg", + "translation_key": "item.minecraft.dolphin_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/donkey_spawn_egg.json b/src/main/generated/data/minecraft/item/donkey_spawn_egg.json index 14eec093..7752309c 100644 --- a/src/main/generated/data/minecraft/item/donkey_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/donkey_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.donkey_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:donkey_spawn_egg", + "translation_key": "item.minecraft.donkey_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dragon_breath.json b/src/main/generated/data/minecraft/item/dragon_breath.json index ae6070e5..8337f4e6 100644 --- a/src/main/generated/data/minecraft/item/dragon_breath.json +++ b/src/main/generated/data/minecraft/item/dragon_breath.json @@ -1,9 +1,10 @@ { - "base": { + "behavior": { + "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dragon_breath", "rarity": "uncommon", "translation_key": "item.minecraft.dragon_breath" - }, - "components": { - "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dragon_egg.json b/src/main/generated/data/minecraft/item/dragon_egg.json index cddd02bf..eb3c33c5 100644 --- a/src/main/generated/data/minecraft/item/dragon_egg.json +++ b/src/main/generated/data/minecraft/item/dragon_egg.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.dragon_egg" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dragon_egg" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dragon_egg", + "rarity": "epic", + "translation_key": "block.minecraft.dragon_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dragon_head.json b/src/main/generated/data/minecraft/item/dragon_head.json index 68ab835f..3d98cd68 100644 --- a/src/main/generated/data/minecraft/item/dragon_head.json +++ b/src/main/generated/data/minecraft/item/dragon_head.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "rare", - "translation_key": "block.minecraft.dragon_head" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dragon_head", + "rarity": "rare", + "translation_key": "block.minecraft.dragon_head" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dried_kelp.json b/src/main/generated/data/minecraft/item/dried_kelp.json index aab747bc..0824ef47 100644 --- a/src/main/generated/data/minecraft/item/dried_kelp.json +++ b/src/main/generated/data/minecraft/item/dried_kelp.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.dried_kelp" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.3 }, @@ -19,5 +16,9 @@ "amount": 16 } } + }, + "display": { + "model": "minecraft:dried_kelp", + "translation_key": "item.minecraft.dried_kelp" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dried_kelp_block.json b/src/main/generated/data/minecraft/item/dried_kelp_block.json index 135b240e..da0b69ee 100644 --- a/src/main/generated/data/minecraft/item/dried_kelp_block.json +++ b/src/main/generated/data/minecraft/item/dried_kelp_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.dried_kelp_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dried_kelp_block" }, @@ -13,5 +10,9 @@ "ticks": 4001 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dried_kelp_block", + "translation_key": "block.minecraft.dried_kelp_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dripstone_block.json b/src/main/generated/data/minecraft/item/dripstone_block.json index 4aa75bca..9eede92f 100644 --- a/src/main/generated/data/minecraft/item/dripstone_block.json +++ b/src/main/generated/data/minecraft/item/dripstone_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dripstone_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dripstone_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dripstone_block", + "translation_key": "block.minecraft.dripstone_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dropper.json b/src/main/generated/data/minecraft/item/dropper.json index 61f3d4b4..f8ae682b 100644 --- a/src/main/generated/data/minecraft/item/dropper.json +++ b/src/main/generated/data/minecraft/item/dropper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.dropper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:dropper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dropper", + "translation_key": "block.minecraft.dropper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/drowned_spawn_egg.json b/src/main/generated/data/minecraft/item/drowned_spawn_egg.json index 8cc24ed2..58dbbd70 100644 --- a/src/main/generated/data/minecraft/item/drowned_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/drowned_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.drowned_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:drowned_spawn_egg", + "translation_key": "item.minecraft.drowned_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json index 7de1a854..8ce6e7cf 100644 --- a/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/dune_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.dune_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:dune_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:dune_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.dune_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/echo_shard.json b/src/main/generated/data/minecraft/item/echo_shard.json index 19a659af..f3691acd 100644 --- a/src/main/generated/data/minecraft/item/echo_shard.json +++ b/src/main/generated/data/minecraft/item/echo_shard.json @@ -1,9 +1,10 @@ { - "base": { + "behavior": { + "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:echo_shard", "rarity": "uncommon", "translation_key": "item.minecraft.echo_shard" - }, - "components": { - "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/egg.json b/src/main/generated/data/minecraft/item/egg.json index 50ff4375..97a1cac8 100644 --- a/src/main/generated/data/minecraft/item/egg.json +++ b/src/main/generated/data/minecraft/item/egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_projectile" }, @@ -16,5 +13,9 @@ "angle_offset": 0.0, "speed": 1.5 } + }, + "display": { + "model": "minecraft:egg", + "translation_key": "item.minecraft.egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json b/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json index 723e4e43..4f953f2a 100644 --- a/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/elder_guardian_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.elder_guardian_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:elder_guardian_spawn_egg", + "translation_key": "item.minecraft.elder_guardian_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/elytra.json b/src/main/generated/data/minecraft/item/elytra.json index 467445e8..a7da64c8 100644 --- a/src/main/generated/data/minecraft/item/elytra.json +++ b/src/main/generated/data/minecraft/item/elytra.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "epic", - "translation_key": "item.minecraft.elytra" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 432, "preserve_item": true @@ -13,12 +9,29 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_elytra", + "model": "minecraft:elytra", "slot": "chest", "swappable": true }, + "minecraft:glider": { + "useable_if": { + "predicates": { + "minecraft:damage": { + "durability": { + "min": 2 + } + } + } + } + }, "minecraft:repairable": { "items": "minecraft:phantom_membrane" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:elytra", + "rarity": "epic", + "translation_key": "item.minecraft.elytra" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/emerald.json b/src/main/generated/data/minecraft/item/emerald.json index 26483531..608b1a43 100644 --- a/src/main/generated/data/minecraft/item/emerald.json +++ b/src/main/generated/data/minecraft/item/emerald.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.emerald" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:emerald", + "translation_key": "item.minecraft.emerald" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/emerald_block.json b/src/main/generated/data/minecraft/item/emerald_block.json index ca60c879..66e40ca2 100644 --- a/src/main/generated/data/minecraft/item/emerald_block.json +++ b/src/main/generated/data/minecraft/item/emerald_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.emerald_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:emerald_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:emerald_block", + "translation_key": "block.minecraft.emerald_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/emerald_ore.json b/src/main/generated/data/minecraft/item/emerald_ore.json index 83bea135..0bafbbf6 100644 --- a/src/main/generated/data/minecraft/item/emerald_ore.json +++ b/src/main/generated/data/minecraft/item/emerald_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.emerald_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:emerald_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:emerald_ore", + "translation_key": "block.minecraft.emerald_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/enchanted_book.json b/src/main/generated/data/minecraft/item/enchanted_book.json index 6eeaf22e..58f2aa7b 100644 --- a/src/main/generated/data/minecraft/item/enchanted_book.json +++ b/src/main/generated/data/minecraft/item/enchanted_book.json @@ -1,13 +1,14 @@ { - "base": { - "glint": true, - "rarity": "uncommon", - "translation_key": "item.minecraft.enchanted_book" - }, - "components": { + "behavior": { "minecraft:enchantment_holder": { "grinding_transforms_into": "minecraft:book" }, "minecraft:stackable": 1 + }, + "display": { + "glint": true, + "model": "minecraft:enchanted_book", + "rarity": "uncommon", + "translation_key": "item.minecraft.enchanted_book" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/enchanted_golden_apple.json b/src/main/generated/data/minecraft/item/enchanted_golden_apple.json index a6fc2b4e..7eb78a34 100644 --- a/src/main/generated/data/minecraft/item/enchanted_golden_apple.json +++ b/src/main/generated/data/minecraft/item/enchanted_golden_apple.json @@ -1,10 +1,5 @@ { - "base": { - "glint": true, - "rarity": "rare", - "translation_key": "item.minecraft.enchanted_golden_apple" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, @@ -20,6 +15,12 @@ } } }, + "display": { + "glint": true, + "model": "minecraft:enchanted_golden_apple", + "rarity": "rare", + "translation_key": "item.minecraft.enchanted_golden_apple" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/enchanting_table.json b/src/main/generated/data/minecraft/item/enchanting_table.json index 203fcc63..57787280 100644 --- a/src/main/generated/data/minecraft/item/enchanting_table.json +++ b/src/main/generated/data/minecraft/item/enchanting_table.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.enchanting_table" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:enchanting_table" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:enchanting_table", + "translation_key": "block.minecraft.enchanting_table" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_crystal.json b/src/main/generated/data/minecraft/item/end_crystal.json index 87bc8111..4eac24ed 100644 --- a/src/main/generated/data/minecraft/item/end_crystal.json +++ b/src/main/generated/data/minecraft/item/end_crystal.json @@ -1,14 +1,15 @@ { - "base": { - "glint": true, - "translation_key": "item.minecraft.end_crystal" - }, - "components": { + "behavior": { "minecraft:entity": { "entity": { "type": "minecraft:end_crystal" } }, "minecraft:stackable": 64 + }, + "display": { + "glint": true, + "model": "minecraft:end_crystal", + "translation_key": "item.minecraft.end_crystal" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_portal_frame.json b/src/main/generated/data/minecraft/item/end_portal_frame.json index b83a5de6..ebc39307 100644 --- a/src/main/generated/data/minecraft/item/end_portal_frame.json +++ b/src/main/generated/data/minecraft/item/end_portal_frame.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_portal_frame" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_portal_frame" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_portal_frame", + "translation_key": "block.minecraft.end_portal_frame" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_rod.json b/src/main/generated/data/minecraft/item/end_rod.json index ca7507d9..0bb1c20d 100644 --- a/src/main/generated/data/minecraft/item/end_rod.json +++ b/src/main/generated/data/minecraft/item/end_rod.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_rod" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_rod" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_rod", + "translation_key": "block.minecraft.end_rod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_stone.json b/src/main/generated/data/minecraft/item/end_stone.json index 181d1dd3..1fa85b78 100644 --- a/src/main/generated/data/minecraft/item/end_stone.json +++ b/src/main/generated/data/minecraft/item/end_stone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_stone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_stone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_stone", + "translation_key": "block.minecraft.end_stone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_stone_brick_slab.json b/src/main/generated/data/minecraft/item/end_stone_brick_slab.json index 192d97e4..38dba004 100644 --- a/src/main/generated/data/minecraft/item/end_stone_brick_slab.json +++ b/src/main/generated/data/minecraft/item/end_stone_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_stone_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_stone_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_stone_brick_slab", + "translation_key": "block.minecraft.end_stone_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_stone_brick_stairs.json b/src/main/generated/data/minecraft/item/end_stone_brick_stairs.json index 53b00fb3..f0a2fb53 100644 --- a/src/main/generated/data/minecraft/item/end_stone_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/end_stone_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_stone_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_stone_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_stone_brick_stairs", + "translation_key": "block.minecraft.end_stone_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_stone_brick_wall.json b/src/main/generated/data/minecraft/item/end_stone_brick_wall.json index d39df90b..508f9abd 100644 --- a/src/main/generated/data/minecraft/item/end_stone_brick_wall.json +++ b/src/main/generated/data/minecraft/item/end_stone_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_stone_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_stone_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_stone_brick_wall", + "translation_key": "block.minecraft.end_stone_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/end_stone_bricks.json b/src/main/generated/data/minecraft/item/end_stone_bricks.json index eca1d29b..1a1a4ca5 100644 --- a/src/main/generated/data/minecraft/item/end_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/end_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.end_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:end_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:end_stone_bricks", + "translation_key": "block.minecraft.end_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ender_chest.json b/src/main/generated/data/minecraft/item/ender_chest.json index ab211d41..232d5b4b 100644 --- a/src/main/generated/data/minecraft/item/ender_chest.json +++ b/src/main/generated/data/minecraft/item/ender_chest.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.ender_chest" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:ender_chest" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ender_chest", + "translation_key": "block.minecraft.ender_chest" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json b/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json index 98c24408..8303b729 100644 --- a/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ender_dragon_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ender_dragon_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:ender_dragon_spawn_egg", + "translation_key": "item.minecraft.ender_dragon_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ender_eye.json b/src/main/generated/data/minecraft/item/ender_eye.json index c6c8fc71..7788ec26 100644 --- a/src/main/generated/data/minecraft/item/ender_eye.json +++ b/src/main/generated/data/minecraft/item/ender_eye.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ender_eye" - }, - "components": { + "behavior": { "minecraft:prevent_use_when_used_on_target": { "block": true }, @@ -17,6 +14,10 @@ "speed": 0.0 } }, + "display": { + "model": "minecraft:ender_eye", + "translation_key": "item.minecraft.ender_eye" + }, "events": { "minecraft:throw_projectile": { "action": { diff --git a/src/main/generated/data/minecraft/item/ender_pearl.json b/src/main/generated/data/minecraft/item/ender_pearl.json index 9090408c..95d51e06 100644 --- a/src/main/generated/data/minecraft/item/ender_pearl.json +++ b/src/main/generated/data/minecraft/item/ender_pearl.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ender_pearl" - }, - "components": { + "behavior": { "minecraft:cooldown": { "ticks": 20 }, @@ -16,5 +13,9 @@ "angle_offset": 0.0, "speed": 1.5 } + }, + "display": { + "model": "minecraft:ender_pearl", + "translation_key": "item.minecraft.ender_pearl" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/enderman_spawn_egg.json b/src/main/generated/data/minecraft/item/enderman_spawn_egg.json index b17ef2a3..fdbe7fa9 100644 --- a/src/main/generated/data/minecraft/item/enderman_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/enderman_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.enderman_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:enderman_spawn_egg", + "translation_key": "item.minecraft.enderman_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/endermite_spawn_egg.json b/src/main/generated/data/minecraft/item/endermite_spawn_egg.json index 233816c7..9736bbc3 100644 --- a/src/main/generated/data/minecraft/item/endermite_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/endermite_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.endermite_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:endermite_spawn_egg", + "translation_key": "item.minecraft.endermite_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/evoker_spawn_egg.json b/src/main/generated/data/minecraft/item/evoker_spawn_egg.json index 624ce2cf..88d03beb 100644 --- a/src/main/generated/data/minecraft/item/evoker_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/evoker_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.evoker_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:evoker_spawn_egg", + "translation_key": "item.minecraft.evoker_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/experience_bottle.json b/src/main/generated/data/minecraft/item/experience_bottle.json index 8b94e4e7..f9c702bd 100644 --- a/src/main/generated/data/minecraft/item/experience_bottle.json +++ b/src/main/generated/data/minecraft/item/experience_bottle.json @@ -1,10 +1,5 @@ { - "base": { - "glint": true, - "rarity": "uncommon", - "translation_key": "item.minecraft.experience_bottle" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_bottle" }, @@ -18,5 +13,11 @@ "angle_offset": -20.0, "speed": 0.7 } + }, + "display": { + "glint": true, + "model": "minecraft:experience_bottle", + "rarity": "uncommon", + "translation_key": "item.minecraft.experience_bottle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json b/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json index faf56317..3447d83f 100644 --- a/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/explorer_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.explorer_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:explorer" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:explorer_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.explorer_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_chiseled_copper.json b/src/main/generated/data/minecraft/item/exposed_chiseled_copper.json index 60114863..0dc99149 100644 --- a/src/main/generated/data/minecraft/item/exposed_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/exposed_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_chiseled_copper", + "translation_key": "block.minecraft.exposed_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_copper.json b/src/main/generated/data/minecraft/item/exposed_copper.json index 26329c91..8b3e3460 100644 --- a/src/main/generated/data/minecraft/item/exposed_copper.json +++ b/src/main/generated/data/minecraft/item/exposed_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_copper", + "translation_key": "block.minecraft.exposed_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_copper_bulb.json b/src/main/generated/data/minecraft/item/exposed_copper_bulb.json index c7799385..a01ebf7c 100644 --- a/src/main/generated/data/minecraft/item/exposed_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/exposed_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_copper_bulb", + "translation_key": "block.minecraft.exposed_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_copper_door.json b/src/main/generated/data/minecraft/item/exposed_copper_door.json index bf9f75a0..deea9f4d 100644 --- a/src/main/generated/data/minecraft/item/exposed_copper_door.json +++ b/src/main/generated/data/minecraft/item/exposed_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_copper_door", + "translation_key": "block.minecraft.exposed_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_copper_grate.json b/src/main/generated/data/minecraft/item/exposed_copper_grate.json index c1477e39..dc8c7d41 100644 --- a/src/main/generated/data/minecraft/item/exposed_copper_grate.json +++ b/src/main/generated/data/minecraft/item/exposed_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_copper_grate", + "translation_key": "block.minecraft.exposed_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_copper_trapdoor.json b/src/main/generated/data/minecraft/item/exposed_copper_trapdoor.json index abd998c2..78ff78f9 100644 --- a/src/main/generated/data/minecraft/item/exposed_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/exposed_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_copper_trapdoor", + "translation_key": "block.minecraft.exposed_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_cut_copper.json b/src/main/generated/data/minecraft/item/exposed_cut_copper.json index b1d6c7a5..73cb1149 100644 --- a/src/main/generated/data/minecraft/item/exposed_cut_copper.json +++ b/src/main/generated/data/minecraft/item/exposed_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_cut_copper", + "translation_key": "block.minecraft.exposed_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_cut_copper_slab.json b/src/main/generated/data/minecraft/item/exposed_cut_copper_slab.json index 093d8f78..09067dcd 100644 --- a/src/main/generated/data/minecraft/item/exposed_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/exposed_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_cut_copper_slab", + "translation_key": "block.minecraft.exposed_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/exposed_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/exposed_cut_copper_stairs.json index c9879161..2c0540d9 100644 --- a/src/main/generated/data/minecraft/item/exposed_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/exposed_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.exposed_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:exposed_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:exposed_cut_copper_stairs", + "translation_key": "block.minecraft.exposed_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json index cda2fd45..900617ce 100644 --- a/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/eye_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.eye_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:eye_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:eye_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.eye_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/farmland.json b/src/main/generated/data/minecraft/item/farmland.json index b9db4284..4906ba30 100644 --- a/src/main/generated/data/minecraft/item/farmland.json +++ b/src/main/generated/data/minecraft/item/farmland.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.farmland" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:farmland" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:farmland", + "translation_key": "block.minecraft.farmland" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/feather.json b/src/main/generated/data/minecraft/item/feather.json index b3e14b5e..a4ddb813 100644 --- a/src/main/generated/data/minecraft/item/feather.json +++ b/src/main/generated/data/minecraft/item/feather.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.feather" - }, - "components": { + "behavior": { "minecraft:firework_shape_modifier": "burst", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:feather", + "translation_key": "item.minecraft.feather" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fermented_spider_eye.json b/src/main/generated/data/minecraft/item/fermented_spider_eye.json index 4dc42e4c..c0b29442 100644 --- a/src/main/generated/data/minecraft/item/fermented_spider_eye.json +++ b/src/main/generated/data/minecraft/item/fermented_spider_eye.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.fermented_spider_eye" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:fermented_spider_eye", + "translation_key": "item.minecraft.fermented_spider_eye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fern.json b/src/main/generated/data/minecraft/item/fern.json index f14c1285..c81a06ca 100644 --- a/src/main/generated/data/minecraft/item/fern.json +++ b/src/main/generated/data/minecraft/item/fern.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.fern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:fern" }, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:fern", + "translation_key": "block.minecraft.fern" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json b/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json index fa98ab6e..35a7f56d 100644 --- a/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/field_masoned_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.field_masoned_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/field_masoned" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:field_masoned_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.field_masoned_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/filled_map.json b/src/main/generated/data/minecraft/item/filled_map.json index b2d39ae9..b60073bc 100644 --- a/src/main/generated/data/minecraft/item/filled_map.json +++ b/src/main/generated/data/minecraft/item/filled_map.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.filled_map" - }, - "components": { + "behavior": { "minecraft:map_holder": {}, "minecraft:stackable": 64, "minecraft:tinted": { @@ -11,6 +8,10 @@ } } }, + "display": { + "model": "minecraft:filled_map", + "translation_key": "item.minecraft.filled_map" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/fire_charge.json b/src/main/generated/data/minecraft/item/fire_charge.json index c3b1bfb4..5114e9fb 100644 --- a/src/main/generated/data/minecraft/item/fire_charge.json +++ b/src/main/generated/data/minecraft/item/fire_charge.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.fire_charge" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_charge" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:fire_charge", + "translation_key": "item.minecraft.fire_charge" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/fire_coral.json b/src/main/generated/data/minecraft/item/fire_coral.json index 00369f33..fdfaa914 100644 --- a/src/main/generated/data/minecraft/item/fire_coral.json +++ b/src/main/generated/data/minecraft/item/fire_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.fire_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:fire_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:fire_coral", + "translation_key": "block.minecraft.fire_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fire_coral_block.json b/src/main/generated/data/minecraft/item/fire_coral_block.json index ce196596..1b574daf 100644 --- a/src/main/generated/data/minecraft/item/fire_coral_block.json +++ b/src/main/generated/data/minecraft/item/fire_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.fire_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:fire_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:fire_coral_block", + "translation_key": "block.minecraft.fire_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fire_coral_fan.json b/src/main/generated/data/minecraft/item/fire_coral_fan.json index 5a5ed2f1..9f9e75b0 100644 --- a/src/main/generated/data/minecraft/item/fire_coral_fan.json +++ b/src/main/generated/data/minecraft/item/fire_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.fire_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:fire_coral_fan", + "translation_key": "block.minecraft.fire_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/firework_rocket.json b/src/main/generated/data/minecraft/item/firework_rocket.json index 4fb18aa0..d479e0f4 100644 --- a/src/main/generated/data/minecraft/item/firework_rocket.json +++ b/src/main/generated/data/minecraft/item/firework_rocket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.firework_rocket" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_firework_rocket" }, @@ -13,5 +10,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:firework_rocket", + "translation_key": "item.minecraft.firework_rocket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/firework_star.json b/src/main/generated/data/minecraft/item/firework_star.json index ad55a276..c6e9cdec 100644 --- a/src/main/generated/data/minecraft/item/firework_star.json +++ b/src/main/generated/data/minecraft/item/firework_star.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.firework_star" - }, - "components": { + "behavior": { "minecraft:firework_explosion_holder": {}, "minecraft:stackable": 64, "minecraft:tinted": { @@ -10,5 +7,9 @@ "type": "minecraft:firework" } } + }, + "display": { + "model": "minecraft:firework_star", + "translation_key": "item.minecraft.firework_star" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fishing_rod.json b/src/main/generated/data/minecraft/item/fishing_rod.json index 643b01e8..04499e2e 100644 --- a/src/main/generated/data/minecraft/item/fishing_rod.json +++ b/src/main/generated/data/minecraft/item/fishing_rod.json @@ -1,12 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.fishing_rod" - }, - "components": { + "behavior": { "minecraft:castable": {}, "minecraft:fuel": { "ticks": 300 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:fishing_rod", + "translation_key": "item.minecraft.fishing_rod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fletching_table.json b/src/main/generated/data/minecraft/item/fletching_table.json index 9202e8e4..ba2221bf 100644 --- a/src/main/generated/data/minecraft/item/fletching_table.json +++ b/src/main/generated/data/minecraft/item/fletching_table.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.fletching_table" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:fletching_table" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:fletching_table", + "translation_key": "block.minecraft.fletching_table" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flint.json b/src/main/generated/data/minecraft/item/flint.json index 9a0924bb..400ee9f4 100644 --- a/src/main/generated/data/minecraft/item/flint.json +++ b/src/main/generated/data/minecraft/item/flint.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.flint" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:flint", + "translation_key": "item.minecraft.flint" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flint_and_steel.json b/src/main/generated/data/minecraft/item/flint_and_steel.json index 8d7f4dc6..33f4aecf 100644 --- a/src/main/generated/data/minecraft/item/flint_and_steel.json +++ b/src/main/generated/data/minecraft/item/flint_and_steel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.flint_and_steel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 64 }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 1 }, + "display": { + "model": "minecraft:flint_and_steel", + "translation_key": "item.minecraft.flint_and_steel" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json index 795019d8..5cb452f1 100644 --- a/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/flow_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.flow_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:flow_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:flow_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.flow_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flow_banner_pattern.json b/src/main/generated/data/minecraft/item/flow_banner_pattern.json index 499b4564..253aaa42 100644 --- a/src/main/generated/data/minecraft/item/flow_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/flow_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.flow_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/flow" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:flow_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.flow_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flow_pottery_sherd.json b/src/main/generated/data/minecraft/item/flow_pottery_sherd.json index fc03a5df..a7df666e 100644 --- a/src/main/generated/data/minecraft/item/flow_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/flow_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.flow_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:flow" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:flow_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.flow_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flower_banner_pattern.json b/src/main/generated/data/minecraft/item/flower_banner_pattern.json index 1ff49796..970a857c 100644 --- a/src/main/generated/data/minecraft/item/flower_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/flower_banner_pattern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.flower_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/flower" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:flower_banner_pattern", + "translation_key": "item.minecraft.flower_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flower_pot.json b/src/main/generated/data/minecraft/item/flower_pot.json index 5595d7ed..1e38ee8e 100644 --- a/src/main/generated/data/minecraft/item/flower_pot.json +++ b/src/main/generated/data/minecraft/item/flower_pot.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.flower_pot" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:flower_pot" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:flower_pot", + "translation_key": "block.minecraft.flower_pot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/flowering_azalea.json b/src/main/generated/data/minecraft/item/flowering_azalea.json index a4e62826..b346358e 100644 --- a/src/main/generated/data/minecraft/item/flowering_azalea.json +++ b/src/main/generated/data/minecraft/item/flowering_azalea.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.flowering_azalea" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:flowering_azalea" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:flowering_azalea", + "translation_key": "block.minecraft.flowering_azalea" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/flowering_azalea_leaves.json b/src/main/generated/data/minecraft/item/flowering_azalea_leaves.json index 745d5f99..6db813d7 100644 --- a/src/main/generated/data/minecraft/item/flowering_azalea_leaves.json +++ b/src/main/generated/data/minecraft/item/flowering_azalea_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.flowering_azalea_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:flowering_azalea_leaves" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:flowering_azalea_leaves", + "translation_key": "block.minecraft.flowering_azalea_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/fox_spawn_egg.json b/src/main/generated/data/minecraft/item/fox_spawn_egg.json index 186ca6af..c2f530d0 100644 --- a/src/main/generated/data/minecraft/item/fox_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/fox_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.fox_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:fox_spawn_egg", + "translation_key": "item.minecraft.fox_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/friend_pottery_sherd.json b/src/main/generated/data/minecraft/item/friend_pottery_sherd.json index 8ce96b33..136ed7f2 100644 --- a/src/main/generated/data/minecraft/item/friend_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/friend_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.friend_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:friend" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:friend_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.friend_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/frog_spawn_egg.json b/src/main/generated/data/minecraft/item/frog_spawn_egg.json index ebe0c664..3a2a990e 100644 --- a/src/main/generated/data/minecraft/item/frog_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/frog_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.frog_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:frog_spawn_egg", + "translation_key": "item.minecraft.frog_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/frogspawn.json b/src/main/generated/data/minecraft/item/frogspawn.json index 1803a91e..065007ff 100644 --- a/src/main/generated/data/minecraft/item/frogspawn.json +++ b/src/main/generated/data/minecraft/item/frogspawn.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.frogspawn" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:frogspawn", "passes": [ @@ -10,5 +7,9 @@ ] }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:frogspawn", + "translation_key": "block.minecraft.frogspawn" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/furnace.json b/src/main/generated/data/minecraft/item/furnace.json index 3d6e9d0d..70456143 100644 --- a/src/main/generated/data/minecraft/item/furnace.json +++ b/src/main/generated/data/minecraft/item/furnace.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.furnace" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:furnace" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:furnace", + "translation_key": "block.minecraft.furnace" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/furnace_minecart.json b/src/main/generated/data/minecraft/item/furnace_minecart.json index c921fc2d..13e0ea41 100644 --- a/src/main/generated/data/minecraft/item/furnace_minecart.json +++ b/src/main/generated/data/minecraft/item/furnace_minecart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.furnace_minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:furnace_minecart", + "translation_key": "item.minecraft.furnace_minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ghast_spawn_egg.json b/src/main/generated/data/minecraft/item/ghast_spawn_egg.json index f8c3e9f4..e1276691 100644 --- a/src/main/generated/data/minecraft/item/ghast_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ghast_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ghast_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:ghast_spawn_egg", + "translation_key": "item.minecraft.ghast_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ghast_tear.json b/src/main/generated/data/minecraft/item/ghast_tear.json index 0f0645bc..c2405229 100644 --- a/src/main/generated/data/minecraft/item/ghast_tear.json +++ b/src/main/generated/data/minecraft/item/ghast_tear.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.ghast_tear" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ghast_tear", + "translation_key": "item.minecraft.ghast_tear" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gilded_blackstone.json b/src/main/generated/data/minecraft/item/gilded_blackstone.json index b7e60c6b..f148e6b5 100644 --- a/src/main/generated/data/minecraft/item/gilded_blackstone.json +++ b/src/main/generated/data/minecraft/item/gilded_blackstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gilded_blackstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gilded_blackstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gilded_blackstone", + "translation_key": "block.minecraft.gilded_blackstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glass.json b/src/main/generated/data/minecraft/item/glass.json index 74e9418d..57263aea 100644 --- a/src/main/generated/data/minecraft/item/glass.json +++ b/src/main/generated/data/minecraft/item/glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glass", + "translation_key": "block.minecraft.glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glass_bottle.json b/src/main/generated/data/minecraft/item/glass_bottle.json index 74307817..69ea7bb4 100644 --- a/src/main/generated/data/minecraft/item/glass_bottle.json +++ b/src/main/generated/data/minecraft/item/glass_bottle.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.glass_bottle" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:glass_bottle" }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:glass_bottle", + "translation_key": "item.minecraft.glass_bottle" + }, "events": { "minecraft:use_on_block": { "action": [ diff --git a/src/main/generated/data/minecraft/item/glass_pane.json b/src/main/generated/data/minecraft/item/glass_pane.json index 8de40d4a..ca74cbd2 100644 --- a/src/main/generated/data/minecraft/item/glass_pane.json +++ b/src/main/generated/data/minecraft/item/glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glass_pane", + "translation_key": "block.minecraft.glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glistering_melon_slice.json b/src/main/generated/data/minecraft/item/glistering_melon_slice.json index f08c024e..45131a96 100644 --- a/src/main/generated/data/minecraft/item/glistering_melon_slice.json +++ b/src/main/generated/data/minecraft/item/glistering_melon_slice.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.glistering_melon_slice" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glistering_melon_slice", + "translation_key": "item.minecraft.glistering_melon_slice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/globe_banner_pattern.json b/src/main/generated/data/minecraft/item/globe_banner_pattern.json index decdb01d..af1b1e4b 100644 --- a/src/main/generated/data/minecraft/item/globe_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/globe_banner_pattern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.globe_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/globe" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:globe_banner_pattern", + "translation_key": "item.minecraft.globe_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glow_berries.json b/src/main/generated/data/minecraft/item/glow_berries.json index 4243b5a9..488c0792 100644 --- a/src/main/generated/data/minecraft/item/glow_berries.json +++ b/src/main/generated/data/minecraft/item/glow_berries.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.glow_berries" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:cave_vines" }, @@ -22,5 +19,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:glow_berries", + "translation_key": "item.minecraft.glow_berries" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glow_ink_sac.json b/src/main/generated/data/minecraft/item/glow_ink_sac.json index 512e8b5b..54041f55 100644 --- a/src/main/generated/data/minecraft/item/glow_ink_sac.json +++ b/src/main/generated/data/minecraft/item/glow_ink_sac.json @@ -1,10 +1,11 @@ { - "base": { - "translation_key": "item.minecraft.glow_ink_sac" - }, - "components": { + "behavior": { "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:glow_ink_sac", + "translation_key": "item.minecraft.glow_ink_sac" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/glow_item_frame.json b/src/main/generated/data/minecraft/item/glow_item_frame.json index 0e5a8234..9d6d0a88 100644 --- a/src/main/generated/data/minecraft/item/glow_item_frame.json +++ b/src/main/generated/data/minecraft/item/glow_item_frame.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.glow_item_frame" - }, - "components": { + "behavior": { "minecraft:entity": { "entity": { "type": "minecraft:glow_item_frame" } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glow_item_frame", + "translation_key": "item.minecraft.glow_item_frame" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glow_lichen.json b/src/main/generated/data/minecraft/item/glow_lichen.json index 1e67193b..4458564a 100644 --- a/src/main/generated/data/minecraft/item/glow_lichen.json +++ b/src/main/generated/data/minecraft/item/glow_lichen.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.glow_lichen" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:glow_lichen" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glow_lichen", + "translation_key": "block.minecraft.glow_lichen" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json b/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json index 734801d3..a1011319 100644 --- a/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/glow_squid_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.glow_squid_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:glow_squid_spawn_egg", + "translation_key": "item.minecraft.glow_squid_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glowstone.json b/src/main/generated/data/minecraft/item/glowstone.json index 9c44a4a3..17740ac8 100644 --- a/src/main/generated/data/minecraft/item/glowstone.json +++ b/src/main/generated/data/minecraft/item/glowstone.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.glowstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:glowstone" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:charge_respawn_anchor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glowstone", + "translation_key": "block.minecraft.glowstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/glowstone_dust.json b/src/main/generated/data/minecraft/item/glowstone_dust.json index be28c8a6..290717ae 100644 --- a/src/main/generated/data/minecraft/item/glowstone_dust.json +++ b/src/main/generated/data/minecraft/item/glowstone_dust.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.glowstone_dust" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:glowstone_dust", + "translation_key": "item.minecraft.glowstone_dust" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/goat_horn.json b/src/main/generated/data/minecraft/item/goat_horn.json index 72914670..dfcf263f 100644 --- a/src/main/generated/data/minecraft/item/goat_horn.json +++ b/src/main/generated/data/minecraft/item/goat_horn.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.goat_horn" - }, - "components": { + "behavior": { "minecraft:playable": { "instruments": "minecraft:goat_horns" }, @@ -14,5 +10,10 @@ "type": "minecraft:playable" } } + }, + "display": { + "model": "minecraft:goat_horn", + "rarity": "uncommon", + "translation_key": "item.minecraft.goat_horn" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/goat_spawn_egg.json b/src/main/generated/data/minecraft/item/goat_spawn_egg.json index e321a601..df34b566 100644 --- a/src/main/generated/data/minecraft/item/goat_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/goat_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.goat_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:goat_spawn_egg", + "translation_key": "item.minecraft.goat_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gold_block.json b/src/main/generated/data/minecraft/item/gold_block.json index 62b6dd80..9868d5e5 100644 --- a/src/main/generated/data/minecraft/item/gold_block.json +++ b/src/main/generated/data/minecraft/item/gold_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gold_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gold_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gold_block", + "translation_key": "block.minecraft.gold_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gold_ingot.json b/src/main/generated/data/minecraft/item/gold_ingot.json index da286959..c9ef1f53 100644 --- a/src/main/generated/data/minecraft/item/gold_ingot.json +++ b/src/main/generated/data/minecraft/item/gold_ingot.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.gold_ingot" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gold_ingot", + "translation_key": "item.minecraft.gold_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gold_nugget.json b/src/main/generated/data/minecraft/item/gold_nugget.json index cd969564..cb299797 100644 --- a/src/main/generated/data/minecraft/item/gold_nugget.json +++ b/src/main/generated/data/minecraft/item/gold_nugget.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.gold_nugget" - }, - "components": { + "behavior": { "minecraft:firework_shape_modifier": "star", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gold_nugget", + "translation_key": "item.minecraft.gold_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gold_ore.json b/src/main/generated/data/minecraft/item/gold_ore.json index b64a777e..d504801b 100644 --- a/src/main/generated/data/minecraft/item/gold_ore.json +++ b/src/main/generated/data/minecraft/item/gold_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gold_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gold_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gold_ore", + "translation_key": "block.minecraft.gold_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_apple.json b/src/main/generated/data/minecraft/item/golden_apple.json index b9260f77..3ec0befd 100644 --- a/src/main/generated/data/minecraft/item/golden_apple.json +++ b/src/main/generated/data/minecraft/item/golden_apple.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_apple" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, @@ -18,6 +15,10 @@ } } }, + "display": { + "model": "minecraft:golden_apple", + "translation_key": "item.minecraft.golden_apple" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/golden_axe.json b/src/main/generated/data/minecraft/item/golden_axe.json index b5389a38..e1feb855 100644 --- a/src/main/generated/data/minecraft/item/golden_axe.json +++ b/src/main/generated/data/minecraft/item/golden_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 32 }, @@ -34,5 +31,9 @@ "attack_speed": 0.25, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:golden_axe", + "translation_key": "item.minecraft.golden_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_boots.json b/src/main/generated/data/minecraft/item/golden_boots.json index e52ff9d0..58f5ecea 100644 --- a/src/main/generated/data/minecraft/item/golden_boots.json +++ b/src/main/generated/data/minecraft/item/golden_boots.json @@ -1,13 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.golden_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:gold" + "attribute_id": "minecraft:armor.boots", + "defense": 1, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { - "durability": 91 + "durability": 195 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", + "model": "minecraft:gold", "slot": "feet", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:golden_boots", + "translation_key": "item.minecraft.golden_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_carrot.json b/src/main/generated/data/minecraft/item/golden_carrot.json index 2991f729..1d326480 100644 --- a/src/main/generated/data/minecraft/item/golden_carrot.json +++ b/src/main/generated/data/minecraft/item/golden_carrot.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_carrot" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:golden_carrot", + "translation_key": "item.minecraft.golden_carrot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_chestplate.json b/src/main/generated/data/minecraft/item/golden_chestplate.json index 49d81c67..85bfaa7b 100644 --- a/src/main/generated/data/minecraft/item/golden_chestplate.json +++ b/src/main/generated/data/minecraft/item/golden_chestplate.json @@ -1,13 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.golden_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:gold" + "attribute_id": "minecraft:armor.chestplate", + "defense": 5, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { - "durability": 112 + "durability": 240 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", + "model": "minecraft:gold", "slot": "chest", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:golden_chestplate", + "translation_key": "item.minecraft.golden_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_helmet.json b/src/main/generated/data/minecraft/item/golden_helmet.json index 558d1a7e..9b2cc674 100644 --- a/src/main/generated/data/minecraft/item/golden_helmet.json +++ b/src/main/generated/data/minecraft/item/golden_helmet.json @@ -1,13 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.golden_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:gold" + "attribute_id": "minecraft:armor.helmet", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { - "durability": 77 + "durability": 165 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", + "model": "minecraft:gold", "slot": "head", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:golden_helmet", + "translation_key": "item.minecraft.golden_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_hoe.json b/src/main/generated/data/minecraft/item/golden_hoe.json index b99174f1..7b0a13ee 100644 --- a/src/main/generated/data/minecraft/item/golden_hoe.json +++ b/src/main/generated/data/minecraft/item/golden_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 32 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:golden_hoe", + "translation_key": "item.minecraft.golden_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/golden_horse_armor.json b/src/main/generated/data/minecraft/item/golden_horse_armor.json index 6ea14a58..2143838c 100644 --- a/src/main/generated/data/minecraft/item/golden_horse_armor.json +++ b/src/main/generated/data/minecraft/item/golden_horse_armor.json @@ -1,19 +1,29 @@ { - "base": { - "translation_key": "item.minecraft.golden_horse_armor" - }, - "components": { + "behavior": { "minecraft:armor": { - "armor_type": "equestrian", - "material": "minecraft:gold" + "attribute_id": "minecraft:armor.body", + "defense": 7, + "knockback_resistance": 0.0, + "toughness": 0.0 + }, + "minecraft:damageable": { + "break_sound": "minecraft:entity.item.break", + "durability": 240 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { + "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_gold", - "slot": "body" + "model": "minecraft:gold", + "slot": "body", + "swappable": true }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:golden_horse_armor", + "translation_key": "item.minecraft.golden_horse_armor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_leggings.json b/src/main/generated/data/minecraft/item/golden_leggings.json index cddb97aa..e301db4c 100644 --- a/src/main/generated/data/minecraft/item/golden_leggings.json +++ b/src/main/generated/data/minecraft/item/golden_leggings.json @@ -1,13 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.golden_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:gold" + "attribute_id": "minecraft:armor.leggings", + "defense": 3, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { - "durability": 105 + "durability": 225 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", + "model": "minecraft:gold", "slot": "legs", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_golden_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:golden_leggings", + "translation_key": "item.minecraft.golden_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_pickaxe.json b/src/main/generated/data/minecraft/item/golden_pickaxe.json index acb05cb3..f9e06186 100644 --- a/src/main/generated/data/minecraft/item/golden_pickaxe.json +++ b/src/main/generated/data/minecraft/item/golden_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 32 }, @@ -34,5 +31,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:golden_pickaxe", + "translation_key": "item.minecraft.golden_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/golden_shovel.json b/src/main/generated/data/minecraft/item/golden_shovel.json index c5921ee9..b496c65f 100644 --- a/src/main/generated/data/minecraft/item/golden_shovel.json +++ b/src/main/generated/data/minecraft/item/golden_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 32 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:golden_shovel", + "translation_key": "item.minecraft.golden_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/golden_sword.json b/src/main/generated/data/minecraft/item/golden_sword.json index 1a762d9f..5562ad6f 100644 --- a/src/main/generated/data/minecraft/item/golden_sword.json +++ b/src/main/generated/data/minecraft/item/golden_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.golden_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 32 }, @@ -34,5 +31,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:golden_sword", + "translation_key": "item.minecraft.golden_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/granite.json b/src/main/generated/data/minecraft/item/granite.json index ee0ff7df..178846d3 100644 --- a/src/main/generated/data/minecraft/item/granite.json +++ b/src/main/generated/data/minecraft/item/granite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.granite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:granite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:granite", + "translation_key": "block.minecraft.granite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/granite_slab.json b/src/main/generated/data/minecraft/item/granite_slab.json index 3ba9c878..dfda4a16 100644 --- a/src/main/generated/data/minecraft/item/granite_slab.json +++ b/src/main/generated/data/minecraft/item/granite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.granite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:granite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:granite_slab", + "translation_key": "block.minecraft.granite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/granite_stairs.json b/src/main/generated/data/minecraft/item/granite_stairs.json index e733efc2..5d05ccc7 100644 --- a/src/main/generated/data/minecraft/item/granite_stairs.json +++ b/src/main/generated/data/minecraft/item/granite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.granite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:granite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:granite_stairs", + "translation_key": "block.minecraft.granite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/granite_wall.json b/src/main/generated/data/minecraft/item/granite_wall.json index 7341d301..13367c3b 100644 --- a/src/main/generated/data/minecraft/item/granite_wall.json +++ b/src/main/generated/data/minecraft/item/granite_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.granite_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:granite_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:granite_wall", + "translation_key": "block.minecraft.granite_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/grass_block.json b/src/main/generated/data/minecraft/item/grass_block.json index 3d5de355..931e3e4b 100644 --- a/src/main/generated/data/minecraft/item/grass_block.json +++ b/src/main/generated/data/minecraft/item/grass_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.grass_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:grass_block" }, @@ -13,5 +10,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:grass_block", + "translation_key": "block.minecraft.grass_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gravel.json b/src/main/generated/data/minecraft/item/gravel.json index d0524076..98b3c88f 100644 --- a/src/main/generated/data/minecraft/item/gravel.json +++ b/src/main/generated/data/minecraft/item/gravel.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gravel" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gravel" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gravel", + "translation_key": "block.minecraft.gravel" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_banner.json b/src/main/generated/data/minecraft/item/gray_banner.json index 58a9787c..528b9903 100644 --- a/src/main/generated/data/minecraft/item/gray_banner.json +++ b/src/main/generated/data/minecraft/item/gray_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.gray_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "gray" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:gray_banner", + "translation_key": "block.minecraft.gray_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_bed.json b/src/main/generated/data/minecraft/item/gray_bed.json index f1aaf762..75f25c98 100644 --- a/src/main/generated/data/minecraft/item/gray_bed.json +++ b/src/main/generated/data/minecraft/item/gray_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:gray_bed", + "translation_key": "block.minecraft.gray_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_candle.json b/src/main/generated/data/minecraft/item/gray_candle.json index acf83b11..feab230f 100644 --- a/src/main/generated/data/minecraft/item/gray_candle.json +++ b/src/main/generated/data/minecraft/item/gray_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_candle", + "translation_key": "block.minecraft.gray_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_carpet.json b/src/main/generated/data/minecraft/item/gray_carpet.json index 7f808338..d82047dd 100644 --- a/src/main/generated/data/minecraft/item/gray_carpet.json +++ b/src/main/generated/data/minecraft/item/gray_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.gray_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:gray_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_carpet", + "translation_key": "block.minecraft.gray_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_concrete.json b/src/main/generated/data/minecraft/item/gray_concrete.json index 490fe97b..a502c7d2 100644 --- a/src/main/generated/data/minecraft/item/gray_concrete.json +++ b/src/main/generated/data/minecraft/item/gray_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_concrete", + "translation_key": "block.minecraft.gray_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_concrete_powder.json b/src/main/generated/data/minecraft/item/gray_concrete_powder.json index d74b9fec..52931c39 100644 --- a/src/main/generated/data/minecraft/item/gray_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/gray_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_concrete_powder", + "translation_key": "block.minecraft.gray_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_dye.json b/src/main/generated/data/minecraft/item/gray_dye.json index 88f60b1c..536fb575 100644 --- a/src/main/generated/data/minecraft/item/gray_dye.json +++ b/src/main/generated/data/minecraft/item/gray_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.gray_dye" - }, - "components": { + "behavior": { "minecraft:dye": "gray", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_dye", + "translation_key": "item.minecraft.gray_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_glazed_terracotta.json b/src/main/generated/data/minecraft/item/gray_glazed_terracotta.json index 43e163bb..bcf9663d 100644 --- a/src/main/generated/data/minecraft/item/gray_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/gray_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_glazed_terracotta", + "translation_key": "block.minecraft.gray_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_shulker_box.json b/src/main/generated/data/minecraft/item/gray_shulker_box.json index edee1730..90710455 100644 --- a/src/main/generated/data/minecraft/item/gray_shulker_box.json +++ b/src/main/generated/data/minecraft/item/gray_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.gray_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:gray_shulker_box", + "translation_key": "block.minecraft.gray_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_stained_glass.json b/src/main/generated/data/minecraft/item/gray_stained_glass.json index 939d4443..3fa6518d 100644 --- a/src/main/generated/data/minecraft/item/gray_stained_glass.json +++ b/src/main/generated/data/minecraft/item/gray_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_stained_glass", + "translation_key": "block.minecraft.gray_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_stained_glass_pane.json b/src/main/generated/data/minecraft/item/gray_stained_glass_pane.json index 318140fd..a709b5db 100644 --- a/src/main/generated/data/minecraft/item/gray_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/gray_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_stained_glass_pane", + "translation_key": "block.minecraft.gray_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_terracotta.json b/src/main/generated/data/minecraft/item/gray_terracotta.json index 98181bec..b3ee18f3 100644 --- a/src/main/generated/data/minecraft/item/gray_terracotta.json +++ b/src/main/generated/data/minecraft/item/gray_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.gray_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_terracotta", + "translation_key": "block.minecraft.gray_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_wool.json b/src/main/generated/data/minecraft/item/gray_wool.json index 7af4f2a5..7eb9ef7f 100644 --- a/src/main/generated/data/minecraft/item/gray_wool.json +++ b/src/main/generated/data/minecraft/item/gray_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.gray_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:gray_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gray_wool", + "translation_key": "block.minecraft.gray_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_banner.json b/src/main/generated/data/minecraft/item/green_banner.json index ce9719df..602a0558 100644 --- a/src/main/generated/data/minecraft/item/green_banner.json +++ b/src/main/generated/data/minecraft/item/green_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.green_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "green" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:green_banner", + "translation_key": "block.minecraft.green_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_bed.json b/src/main/generated/data/minecraft/item/green_bed.json index 41d1424f..1699fdb2 100644 --- a/src/main/generated/data/minecraft/item/green_bed.json +++ b/src/main/generated/data/minecraft/item/green_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:green_bed", + "translation_key": "block.minecraft.green_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_candle.json b/src/main/generated/data/minecraft/item/green_candle.json index 9d3fe2bd..df30a66c 100644 --- a/src/main/generated/data/minecraft/item/green_candle.json +++ b/src/main/generated/data/minecraft/item/green_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_candle", + "translation_key": "block.minecraft.green_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_carpet.json b/src/main/generated/data/minecraft/item/green_carpet.json index 3a118c91..8b8ad94d 100644 --- a/src/main/generated/data/minecraft/item/green_carpet.json +++ b/src/main/generated/data/minecraft/item/green_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.green_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:green_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_carpet", + "translation_key": "block.minecraft.green_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_concrete.json b/src/main/generated/data/minecraft/item/green_concrete.json index d7fdae02..c9ca12c6 100644 --- a/src/main/generated/data/minecraft/item/green_concrete.json +++ b/src/main/generated/data/minecraft/item/green_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_concrete", + "translation_key": "block.minecraft.green_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_concrete_powder.json b/src/main/generated/data/minecraft/item/green_concrete_powder.json index 82457b23..611232e7 100644 --- a/src/main/generated/data/minecraft/item/green_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/green_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_concrete_powder", + "translation_key": "block.minecraft.green_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_dye.json b/src/main/generated/data/minecraft/item/green_dye.json index 238cd9bf..3920f0fc 100644 --- a/src/main/generated/data/minecraft/item/green_dye.json +++ b/src/main/generated/data/minecraft/item/green_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.green_dye" - }, - "components": { + "behavior": { "minecraft:dye": "green", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_dye", + "translation_key": "item.minecraft.green_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_glazed_terracotta.json b/src/main/generated/data/minecraft/item/green_glazed_terracotta.json index a2430865..9f5d6a71 100644 --- a/src/main/generated/data/minecraft/item/green_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/green_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_glazed_terracotta", + "translation_key": "block.minecraft.green_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_shulker_box.json b/src/main/generated/data/minecraft/item/green_shulker_box.json index eca60b2f..5f9262bf 100644 --- a/src/main/generated/data/minecraft/item/green_shulker_box.json +++ b/src/main/generated/data/minecraft/item/green_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.green_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:green_shulker_box", + "translation_key": "block.minecraft.green_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_stained_glass.json b/src/main/generated/data/minecraft/item/green_stained_glass.json index 769922c3..80133e16 100644 --- a/src/main/generated/data/minecraft/item/green_stained_glass.json +++ b/src/main/generated/data/minecraft/item/green_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_stained_glass", + "translation_key": "block.minecraft.green_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_stained_glass_pane.json b/src/main/generated/data/minecraft/item/green_stained_glass_pane.json index da359cae..40a50520 100644 --- a/src/main/generated/data/minecraft/item/green_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/green_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_stained_glass_pane", + "translation_key": "block.minecraft.green_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_terracotta.json b/src/main/generated/data/minecraft/item/green_terracotta.json index d760250e..0b187c72 100644 --- a/src/main/generated/data/minecraft/item/green_terracotta.json +++ b/src/main/generated/data/minecraft/item/green_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.green_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_terracotta", + "translation_key": "block.minecraft.green_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_wool.json b/src/main/generated/data/minecraft/item/green_wool.json index 51f48a4a..1fd2539e 100644 --- a/src/main/generated/data/minecraft/item/green_wool.json +++ b/src/main/generated/data/minecraft/item/green_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.green_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:green_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:green_wool", + "translation_key": "block.minecraft.green_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/grindstone.json b/src/main/generated/data/minecraft/item/grindstone.json index 2537be34..fc3c2e85 100644 --- a/src/main/generated/data/minecraft/item/grindstone.json +++ b/src/main/generated/data/minecraft/item/grindstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.grindstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:grindstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:grindstone", + "translation_key": "block.minecraft.grindstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/guardian_spawn_egg.json b/src/main/generated/data/minecraft/item/guardian_spawn_egg.json index 040848d3..754a660e 100644 --- a/src/main/generated/data/minecraft/item/guardian_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/guardian_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.guardian_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:guardian_spawn_egg", + "translation_key": "item.minecraft.guardian_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gunpowder.json b/src/main/generated/data/minecraft/item/gunpowder.json index bfca59ce..dc2bdbf9 100644 --- a/src/main/generated/data/minecraft/item/gunpowder.json +++ b/src/main/generated/data/minecraft/item/gunpowder.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.gunpowder" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:gunpowder", + "translation_key": "item.minecraft.gunpowder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/guster_banner_pattern.json b/src/main/generated/data/minecraft/item/guster_banner_pattern.json index 072d1df8..6baae8fb 100644 --- a/src/main/generated/data/minecraft/item/guster_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/guster_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.guster_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/guster" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:guster_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.guster_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/guster_pottery_sherd.json b/src/main/generated/data/minecraft/item/guster_pottery_sherd.json index 9d828c02..68af5225 100644 --- a/src/main/generated/data/minecraft/item/guster_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/guster_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.guster_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:guster" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:guster_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.guster_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/hanging_roots.json b/src/main/generated/data/minecraft/item/hanging_roots.json index 5828644a..c3178159 100644 --- a/src/main/generated/data/minecraft/item/hanging_roots.json +++ b/src/main/generated/data/minecraft/item/hanging_roots.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.hanging_roots" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:hanging_roots" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:hanging_roots", + "translation_key": "block.minecraft.hanging_roots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/hay_block.json b/src/main/generated/data/minecraft/item/hay_block.json index 0b6f8dba..e92eca22 100644 --- a/src/main/generated/data/minecraft/item/hay_block.json +++ b/src/main/generated/data/minecraft/item/hay_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.hay_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:hay_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:hay_block", + "translation_key": "block.minecraft.hay_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/heart_of_the_sea.json b/src/main/generated/data/minecraft/item/heart_of_the_sea.json index 1f8fbe2d..9b9d8469 100644 --- a/src/main/generated/data/minecraft/item/heart_of_the_sea.json +++ b/src/main/generated/data/minecraft/item/heart_of_the_sea.json @@ -1,9 +1,10 @@ { - "base": { + "behavior": { + "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:heart_of_the_sea", "rarity": "uncommon", "translation_key": "item.minecraft.heart_of_the_sea" - }, - "components": { - "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/heart_pottery_sherd.json b/src/main/generated/data/minecraft/item/heart_pottery_sherd.json index 70758e74..9ea3bce3 100644 --- a/src/main/generated/data/minecraft/item/heart_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/heart_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.heart_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:heart" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:heart_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.heart_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json b/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json index 5d7f66c9..8f2fcffc 100644 --- a/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/heartbreak_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.heartbreak_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:heartbreak" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:heartbreak_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.heartbreak_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/heavy_core.json b/src/main/generated/data/minecraft/item/heavy_core.json index 34efb13f..41d52cd4 100644 --- a/src/main/generated/data/minecraft/item/heavy_core.json +++ b/src/main/generated/data/minecraft/item/heavy_core.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.heavy_core" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:heavy_core" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:heavy_core", + "rarity": "epic", + "translation_key": "block.minecraft.heavy_core" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/heavy_weighted_pressure_plate.json b/src/main/generated/data/minecraft/item/heavy_weighted_pressure_plate.json index 881d6481..5f4cdee9 100644 --- a/src/main/generated/data/minecraft/item/heavy_weighted_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/heavy_weighted_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.heavy_weighted_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:heavy_weighted_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:heavy_weighted_pressure_plate", + "translation_key": "block.minecraft.heavy_weighted_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json b/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json index 5fcfeb7f..ca3ab5bf 100644 --- a/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/hoglin_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.hoglin_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:hoglin_spawn_egg", + "translation_key": "item.minecraft.hoglin_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/honey_block.json b/src/main/generated/data/minecraft/item/honey_block.json index c3c6044f..8a9febb6 100644 --- a/src/main/generated/data/minecraft/item/honey_block.json +++ b/src/main/generated/data/minecraft/item/honey_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.honey_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:honey_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:honey_block", + "translation_key": "block.minecraft.honey_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/honey_bottle.json b/src/main/generated/data/minecraft/item/honey_bottle.json index 241a0875..684940e7 100644 --- a/src/main/generated/data/minecraft/item/honey_bottle.json +++ b/src/main/generated/data/minecraft/item/honey_bottle.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.honey_bottle" - }, - "components": { + "behavior": { "minecraft:consumable": { "has_consume_particles": false, "sound": "minecraft:item.honey_bottle.drink" @@ -24,6 +21,10 @@ } } }, + "display": { + "model": "minecraft:honey_bottle", + "translation_key": "item.minecraft.honey_bottle" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/honeycomb.json b/src/main/generated/data/minecraft/item/honeycomb.json index f468274b..2c71bb7c 100644 --- a/src/main/generated/data/minecraft/item/honeycomb.json +++ b/src/main/generated/data/minecraft/item/honeycomb.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.honeycomb" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:wax_block" }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:honeycomb", + "translation_key": "item.minecraft.honeycomb" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/honeycomb_block.json b/src/main/generated/data/minecraft/item/honeycomb_block.json index 3708a271..038b9ec8 100644 --- a/src/main/generated/data/minecraft/item/honeycomb_block.json +++ b/src/main/generated/data/minecraft/item/honeycomb_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.honeycomb_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:honeycomb_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:honeycomb_block", + "translation_key": "block.minecraft.honeycomb_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/hopper.json b/src/main/generated/data/minecraft/item/hopper.json index 4beb461b..026525ff 100644 --- a/src/main/generated/data/minecraft/item/hopper.json +++ b/src/main/generated/data/minecraft/item/hopper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.hopper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:hopper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:hopper", + "translation_key": "block.minecraft.hopper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/hopper_minecart.json b/src/main/generated/data/minecraft/item/hopper_minecart.json index 1e35b54a..60748175 100644 --- a/src/main/generated/data/minecraft/item/hopper_minecart.json +++ b/src/main/generated/data/minecraft/item/hopper_minecart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.hopper_minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:hopper_minecart", + "translation_key": "item.minecraft.hopper_minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/horn_coral.json b/src/main/generated/data/minecraft/item/horn_coral.json index 5175eb5c..09910e45 100644 --- a/src/main/generated/data/minecraft/item/horn_coral.json +++ b/src/main/generated/data/minecraft/item/horn_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.horn_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:horn_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:horn_coral", + "translation_key": "block.minecraft.horn_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/horn_coral_block.json b/src/main/generated/data/minecraft/item/horn_coral_block.json index 64f47160..1f2e419b 100644 --- a/src/main/generated/data/minecraft/item/horn_coral_block.json +++ b/src/main/generated/data/minecraft/item/horn_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.horn_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:horn_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:horn_coral_block", + "translation_key": "block.minecraft.horn_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/horn_coral_fan.json b/src/main/generated/data/minecraft/item/horn_coral_fan.json index 3b1680e3..a2815375 100644 --- a/src/main/generated/data/minecraft/item/horn_coral_fan.json +++ b/src/main/generated/data/minecraft/item/horn_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.horn_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:horn_coral_fan", + "translation_key": "block.minecraft.horn_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/horse_spawn_egg.json b/src/main/generated/data/minecraft/item/horse_spawn_egg.json index de1055ba..a14ce7a7 100644 --- a/src/main/generated/data/minecraft/item/horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/horse_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.horse_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:horse_spawn_egg", + "translation_key": "item.minecraft.horse_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json index 751e9fd9..a73b60fa 100644 --- a/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/host_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.host_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:host_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:host_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.host_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/howl_pottery_sherd.json b/src/main/generated/data/minecraft/item/howl_pottery_sherd.json index ebe4e9a9..143185fd 100644 --- a/src/main/generated/data/minecraft/item/howl_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/howl_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.howl_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:howl" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:howl_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.howl_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/husk_spawn_egg.json b/src/main/generated/data/minecraft/item/husk_spawn_egg.json index d4b4c0ea..e68d34b7 100644 --- a/src/main/generated/data/minecraft/item/husk_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/husk_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.husk_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:husk_spawn_egg", + "translation_key": "item.minecraft.husk_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ice.json b/src/main/generated/data/minecraft/item/ice.json index fe04f6ed..12906200 100644 --- a/src/main/generated/data/minecraft/item/ice.json +++ b/src/main/generated/data/minecraft/item/ice.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.ice" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:ice" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ice", + "translation_key": "block.minecraft.ice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_chiseled_stone_bricks.json b/src/main/generated/data/minecraft/item/infested_chiseled_stone_bricks.json index 68ce66fa..4d323472 100644 --- a/src/main/generated/data/minecraft/item/infested_chiseled_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/infested_chiseled_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_chiseled_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_chiseled_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_chiseled_stone_bricks", + "translation_key": "block.minecraft.infested_chiseled_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_cobblestone.json b/src/main/generated/data/minecraft/item/infested_cobblestone.json index da87380d..7a992a30 100644 --- a/src/main/generated/data/minecraft/item/infested_cobblestone.json +++ b/src/main/generated/data/minecraft/item/infested_cobblestone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_cobblestone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_cobblestone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_cobblestone", + "translation_key": "block.minecraft.infested_cobblestone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_cracked_stone_bricks.json b/src/main/generated/data/minecraft/item/infested_cracked_stone_bricks.json index d2b85a25..5fbd6a54 100644 --- a/src/main/generated/data/minecraft/item/infested_cracked_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/infested_cracked_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_cracked_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_cracked_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_cracked_stone_bricks", + "translation_key": "block.minecraft.infested_cracked_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_deepslate.json b/src/main/generated/data/minecraft/item/infested_deepslate.json index e915c1e8..bcd21562 100644 --- a/src/main/generated/data/minecraft/item/infested_deepslate.json +++ b/src/main/generated/data/minecraft/item/infested_deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_deepslate", + "translation_key": "block.minecraft.infested_deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_mossy_stone_bricks.json b/src/main/generated/data/minecraft/item/infested_mossy_stone_bricks.json index c0ba58f9..ffa41ada 100644 --- a/src/main/generated/data/minecraft/item/infested_mossy_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/infested_mossy_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_mossy_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_mossy_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_mossy_stone_bricks", + "translation_key": "block.minecraft.infested_mossy_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_stone.json b/src/main/generated/data/minecraft/item/infested_stone.json index c34d2631..c77d116e 100644 --- a/src/main/generated/data/minecraft/item/infested_stone.json +++ b/src/main/generated/data/minecraft/item/infested_stone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_stone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_stone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_stone", + "translation_key": "block.minecraft.infested_stone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/infested_stone_bricks.json b/src/main/generated/data/minecraft/item/infested_stone_bricks.json index 1f9224c2..76af2f6b 100644 --- a/src/main/generated/data/minecraft/item/infested_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/infested_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.infested_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:infested_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:infested_stone_bricks", + "translation_key": "block.minecraft.infested_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ink_sac.json b/src/main/generated/data/minecraft/item/ink_sac.json index f8aff0b3..39590abf 100644 --- a/src/main/generated/data/minecraft/item/ink_sac.json +++ b/src/main/generated/data/minecraft/item/ink_sac.json @@ -1,10 +1,11 @@ { - "base": { - "translation_key": "item.minecraft.ink_sac" - }, - "components": { + "behavior": { "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:ink_sac", + "translation_key": "item.minecraft.ink_sac" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/iron_axe.json b/src/main/generated/data/minecraft/item/iron_axe.json index 19f1a17f..0b7da415 100644 --- a/src/main/generated/data/minecraft/item/iron_axe.json +++ b/src/main/generated/data/minecraft/item/iron_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250 }, @@ -34,5 +31,9 @@ "attack_speed": 0.225, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:iron_axe", + "translation_key": "item.minecraft.iron_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_bars.json b/src/main/generated/data/minecraft/item/iron_bars.json index aa31235d..c65ebd4a 100644 --- a/src/main/generated/data/minecraft/item/iron_bars.json +++ b/src/main/generated/data/minecraft/item/iron_bars.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.iron_bars" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:iron_bars" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_bars", + "translation_key": "block.minecraft.iron_bars" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_block.json b/src/main/generated/data/minecraft/item/iron_block.json index ddb31b1e..32982ffa 100644 --- a/src/main/generated/data/minecraft/item/iron_block.json +++ b/src/main/generated/data/minecraft/item/iron_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.iron_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:iron_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_block", + "translation_key": "block.minecraft.iron_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_boots.json b/src/main/generated/data/minecraft/item/iron_boots.json index a1923001..24bb9789 100644 --- a/src/main/generated/data/minecraft/item/iron_boots.json +++ b/src/main/generated/data/minecraft/item/iron_boots.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.iron_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:iron" + "attribute_id": "minecraft:armor.boots", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 195 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", + "model": "minecraft:iron", "slot": "feet", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:iron_boots", + "translation_key": "item.minecraft.iron_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_chestplate.json b/src/main/generated/data/minecraft/item/iron_chestplate.json index ba914d3b..d4efb819 100644 --- a/src/main/generated/data/minecraft/item/iron_chestplate.json +++ b/src/main/generated/data/minecraft/item/iron_chestplate.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.iron_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:iron" + "attribute_id": "minecraft:armor.chestplate", + "defense": 6, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 240 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", + "model": "minecraft:iron", "slot": "chest", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:iron_chestplate", + "translation_key": "item.minecraft.iron_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_door.json b/src/main/generated/data/minecraft/item/iron_door.json index b7132fcf..531e9547 100644 --- a/src/main/generated/data/minecraft/item/iron_door.json +++ b/src/main/generated/data/minecraft/item/iron_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.iron_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:iron_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_door", + "translation_key": "block.minecraft.iron_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json b/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json index 7068257b..5ade1c0f 100644 --- a/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/iron_golem_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_golem_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:iron_golem_spawn_egg", + "translation_key": "item.minecraft.iron_golem_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_helmet.json b/src/main/generated/data/minecraft/item/iron_helmet.json index 3b41ae61..a99e035f 100644 --- a/src/main/generated/data/minecraft/item/iron_helmet.json +++ b/src/main/generated/data/minecraft/item/iron_helmet.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.iron_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:iron" + "attribute_id": "minecraft:armor.helmet", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 165 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", + "model": "minecraft:iron", "slot": "head", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:iron_helmet", + "translation_key": "item.minecraft.iron_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_hoe.json b/src/main/generated/data/minecraft/item/iron_hoe.json index 6ca24254..45981982 100644 --- a/src/main/generated/data/minecraft/item/iron_hoe.json +++ b/src/main/generated/data/minecraft/item/iron_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:iron_hoe", + "translation_key": "item.minecraft.iron_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/iron_horse_armor.json b/src/main/generated/data/minecraft/item/iron_horse_armor.json index 3debfa78..42f6ecb7 100644 --- a/src/main/generated/data/minecraft/item/iron_horse_armor.json +++ b/src/main/generated/data/minecraft/item/iron_horse_armor.json @@ -1,19 +1,29 @@ { - "base": { - "translation_key": "item.minecraft.iron_horse_armor" - }, - "components": { + "behavior": { "minecraft:armor": { - "armor_type": "equestrian", - "material": "minecraft:iron" + "attribute_id": "minecraft:armor.body", + "defense": 5, + "knockback_resistance": 0.0, + "toughness": 0.0 + }, + "minecraft:damageable": { + "break_sound": "minecraft:entity.item.break", + "durability": 240 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { + "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_iron", - "slot": "body" + "model": "minecraft:iron", + "slot": "body", + "swappable": true }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:iron_horse_armor", + "translation_key": "item.minecraft.iron_horse_armor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_ingot.json b/src/main/generated/data/minecraft/item/iron_ingot.json index 0c6bc57a..15767c6b 100644 --- a/src/main/generated/data/minecraft/item/iron_ingot.json +++ b/src/main/generated/data/minecraft/item/iron_ingot.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.iron_ingot" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_ingot", + "translation_key": "item.minecraft.iron_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_leggings.json b/src/main/generated/data/minecraft/item/iron_leggings.json index 8aa4661f..43a1413a 100644 --- a/src/main/generated/data/minecraft/item/iron_leggings.json +++ b/src/main/generated/data/minecraft/item/iron_leggings.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.iron_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:iron" + "attribute_id": "minecraft:armor.leggings", + "defense": 5, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 225 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", + "model": "minecraft:iron", "slot": "legs", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_iron_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:iron_leggings", + "translation_key": "item.minecraft.iron_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_nugget.json b/src/main/generated/data/minecraft/item/iron_nugget.json index d84f0d95..68dcfbdb 100644 --- a/src/main/generated/data/minecraft/item/iron_nugget.json +++ b/src/main/generated/data/minecraft/item/iron_nugget.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.iron_nugget" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_nugget", + "translation_key": "item.minecraft.iron_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_ore.json b/src/main/generated/data/minecraft/item/iron_ore.json index 8b6a4fc5..87e59122 100644 --- a/src/main/generated/data/minecraft/item/iron_ore.json +++ b/src/main/generated/data/minecraft/item/iron_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.iron_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:iron_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_ore", + "translation_key": "block.minecraft.iron_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_pickaxe.json b/src/main/generated/data/minecraft/item/iron_pickaxe.json index 623bdddb..8e29e465 100644 --- a/src/main/generated/data/minecraft/item/iron_pickaxe.json +++ b/src/main/generated/data/minecraft/item/iron_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250 }, @@ -34,5 +31,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:iron_pickaxe", + "translation_key": "item.minecraft.iron_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_shovel.json b/src/main/generated/data/minecraft/item/iron_shovel.json index 603a5e9c..e8870512 100644 --- a/src/main/generated/data/minecraft/item/iron_shovel.json +++ b/src/main/generated/data/minecraft/item/iron_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:iron_shovel", + "translation_key": "item.minecraft.iron_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/iron_sword.json b/src/main/generated/data/minecraft/item/iron_sword.json index 93cad6ab..40c0d960 100644 --- a/src/main/generated/data/minecraft/item/iron_sword.json +++ b/src/main/generated/data/minecraft/item/iron_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.iron_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250 }, @@ -34,5 +31,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:iron_sword", + "translation_key": "item.minecraft.iron_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/iron_trapdoor.json b/src/main/generated/data/minecraft/item/iron_trapdoor.json index 43c48fb1..16b2168b 100644 --- a/src/main/generated/data/minecraft/item/iron_trapdoor.json +++ b/src/main/generated/data/minecraft/item/iron_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.iron_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:iron_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:iron_trapdoor", + "translation_key": "block.minecraft.iron_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/item_frame.json b/src/main/generated/data/minecraft/item/item_frame.json index 82304c82..37659350 100644 --- a/src/main/generated/data/minecraft/item/item_frame.json +++ b/src/main/generated/data/minecraft/item/item_frame.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.item_frame" - }, - "components": { + "behavior": { "minecraft:entity": { "entity": { "type": "minecraft:item_frame" } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:item_frame", + "translation_key": "item.minecraft.item_frame" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jack_o_lantern.json b/src/main/generated/data/minecraft/item/jack_o_lantern.json index 79e6a0c0..f9c295d9 100644 --- a/src/main/generated/data/minecraft/item/jack_o_lantern.json +++ b/src/main/generated/data/minecraft/item/jack_o_lantern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.jack_o_lantern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jack_o_lantern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jack_o_lantern", + "translation_key": "block.minecraft.jack_o_lantern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jigsaw.json b/src/main/generated/data/minecraft/item/jigsaw.json index 348d2ee4..04db40d3 100644 --- a/src/main/generated/data/minecraft/item/jigsaw.json +++ b/src/main/generated/data/minecraft/item/jigsaw.json @@ -1,13 +1,14 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.jigsaw" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jigsaw", "operator_only": true }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jigsaw", + "rarity": "epic", + "translation_key": "block.minecraft.jigsaw" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jukebox.json b/src/main/generated/data/minecraft/item/jukebox.json index 8becb568..f86e47fc 100644 --- a/src/main/generated/data/minecraft/item/jukebox.json +++ b/src/main/generated/data/minecraft/item/jukebox.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jukebox" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jukebox" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jukebox", + "translation_key": "block.minecraft.jukebox" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_boat.json b/src/main/generated/data/minecraft/item/jungle_boat.json index b19ff27f..4be7d90f 100644 --- a/src/main/generated/data/minecraft/item/jungle_boat.json +++ b/src/main/generated/data/minecraft/item/jungle_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.jungle_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:jungle_boat", + "translation_key": "item.minecraft.jungle_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_button.json b/src/main/generated/data/minecraft/item/jungle_button.json index 4c970290..2111a35b 100644 --- a/src/main/generated/data/minecraft/item/jungle_button.json +++ b/src/main/generated/data/minecraft/item/jungle_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_button", + "translation_key": "block.minecraft.jungle_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_chest_boat.json b/src/main/generated/data/minecraft/item/jungle_chest_boat.json index ffaf4fc5..79e17386 100644 --- a/src/main/generated/data/minecraft/item/jungle_chest_boat.json +++ b/src/main/generated/data/minecraft/item/jungle_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.jungle_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:jungle_chest_boat", + "translation_key": "item.minecraft.jungle_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_door.json b/src/main/generated/data/minecraft/item/jungle_door.json index c2b70d44..77b353c4 100644 --- a/src/main/generated/data/minecraft/item/jungle_door.json +++ b/src/main/generated/data/minecraft/item/jungle_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_door", + "translation_key": "block.minecraft.jungle_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_fence.json b/src/main/generated/data/minecraft/item/jungle_fence.json index ba03fdd2..04e98015 100644 --- a/src/main/generated/data/minecraft/item/jungle_fence.json +++ b/src/main/generated/data/minecraft/item/jungle_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_fence", + "translation_key": "block.minecraft.jungle_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_fence_gate.json b/src/main/generated/data/minecraft/item/jungle_fence_gate.json index b2a3b91c..6063490e 100644 --- a/src/main/generated/data/minecraft/item/jungle_fence_gate.json +++ b/src/main/generated/data/minecraft/item/jungle_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_fence_gate", + "translation_key": "block.minecraft.jungle_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_hanging_sign.json b/src/main/generated/data/minecraft/item/jungle_hanging_sign.json index fc639803..b648375f 100644 --- a/src/main/generated/data/minecraft/item/jungle_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/jungle_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:jungle_hanging_sign", + "translation_key": "block.minecraft.jungle_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_leaves.json b/src/main/generated/data/minecraft/item/jungle_leaves.json index efe1e97f..be196c5e 100644 --- a/src/main/generated/data/minecraft/item/jungle_leaves.json +++ b/src/main/generated/data/minecraft/item/jungle_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_leaves" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:jungle_leaves", + "translation_key": "block.minecraft.jungle_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_log.json b/src/main/generated/data/minecraft/item/jungle_log.json index 12afb347..11898a70 100644 --- a/src/main/generated/data/minecraft/item/jungle_log.json +++ b/src/main/generated/data/minecraft/item/jungle_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_log", + "translation_key": "block.minecraft.jungle_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_planks.json b/src/main/generated/data/minecraft/item/jungle_planks.json index 6e5b9510..fa6dbd99 100644 --- a/src/main/generated/data/minecraft/item/jungle_planks.json +++ b/src/main/generated/data/minecraft/item/jungle_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_planks", + "translation_key": "block.minecraft.jungle_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_pressure_plate.json b/src/main/generated/data/minecraft/item/jungle_pressure_plate.json index a67c3f66..52258598 100644 --- a/src/main/generated/data/minecraft/item/jungle_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/jungle_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_pressure_plate", + "translation_key": "block.minecraft.jungle_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_sapling.json b/src/main/generated/data/minecraft/item/jungle_sapling.json index 9e8e77dc..a37246bd 100644 --- a/src/main/generated/data/minecraft/item/jungle_sapling.json +++ b/src/main/generated/data/minecraft/item/jungle_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:jungle_sapling", + "translation_key": "block.minecraft.jungle_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/jungle_sign.json b/src/main/generated/data/minecraft/item/jungle_sign.json index 7baa533b..e503625f 100644 --- a/src/main/generated/data/minecraft/item/jungle_sign.json +++ b/src/main/generated/data/minecraft/item/jungle_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:jungle_sign", + "translation_key": "block.minecraft.jungle_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_slab.json b/src/main/generated/data/minecraft/item/jungle_slab.json index e7416cdc..d188f524 100644 --- a/src/main/generated/data/minecraft/item/jungle_slab.json +++ b/src/main/generated/data/minecraft/item/jungle_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_slab", + "translation_key": "block.minecraft.jungle_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_stairs.json b/src/main/generated/data/minecraft/item/jungle_stairs.json index 737ba94b..8ba19688 100644 --- a/src/main/generated/data/minecraft/item/jungle_stairs.json +++ b/src/main/generated/data/minecraft/item/jungle_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_stairs", + "translation_key": "block.minecraft.jungle_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_trapdoor.json b/src/main/generated/data/minecraft/item/jungle_trapdoor.json index 56777a17..501db6fb 100644 --- a/src/main/generated/data/minecraft/item/jungle_trapdoor.json +++ b/src/main/generated/data/minecraft/item/jungle_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_trapdoor", + "translation_key": "block.minecraft.jungle_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/jungle_wood.json b/src/main/generated/data/minecraft/item/jungle_wood.json index 4e21c0b3..e36e7f2f 100644 --- a/src/main/generated/data/minecraft/item/jungle_wood.json +++ b/src/main/generated/data/minecraft/item/jungle_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.jungle_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:jungle_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:jungle_wood", + "translation_key": "block.minecraft.jungle_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/kelp.json b/src/main/generated/data/minecraft/item/kelp.json index 68318343..d7a72ed5 100644 --- a/src/main/generated/data/minecraft/item/kelp.json +++ b/src/main/generated/data/minecraft/item/kelp.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.kelp" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:kelp" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:kelp", + "translation_key": "block.minecraft.kelp" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/knowledge_book.json b/src/main/generated/data/minecraft/item/knowledge_book.json index 0917a147..13a963cf 100644 --- a/src/main/generated/data/minecraft/item/knowledge_book.json +++ b/src/main/generated/data/minecraft/item/knowledge_book.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "epic", - "translation_key": "item.minecraft.knowledge_book" - }, - "components": { + "behavior": { "minecraft:stackable": 1, "minecraft:unlock_recipes": {} + }, + "display": { + "model": "minecraft:knowledge_book", + "rarity": "epic", + "translation_key": "item.minecraft.knowledge_book" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ladder.json b/src/main/generated/data/minecraft/item/ladder.json index 8326ffe9..6d29b7b1 100644 --- a/src/main/generated/data/minecraft/item/ladder.json +++ b/src/main/generated/data/minecraft/item/ladder.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.ladder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:ladder" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ladder", + "translation_key": "block.minecraft.ladder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lantern.json b/src/main/generated/data/minecraft/item/lantern.json index 878b3328..a173f057 100644 --- a/src/main/generated/data/minecraft/item/lantern.json +++ b/src/main/generated/data/minecraft/item/lantern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lantern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lantern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lantern", + "translation_key": "block.minecraft.lantern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lapis_block.json b/src/main/generated/data/minecraft/item/lapis_block.json index ddb37ea8..86f10f58 100644 --- a/src/main/generated/data/minecraft/item/lapis_block.json +++ b/src/main/generated/data/minecraft/item/lapis_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lapis_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lapis_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lapis_block", + "translation_key": "block.minecraft.lapis_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lapis_lazuli.json b/src/main/generated/data/minecraft/item/lapis_lazuli.json index ad51797c..373d3737 100644 --- a/src/main/generated/data/minecraft/item/lapis_lazuli.json +++ b/src/main/generated/data/minecraft/item/lapis_lazuli.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.lapis_lazuli" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lapis_lazuli", + "translation_key": "item.minecraft.lapis_lazuli" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lapis_ore.json b/src/main/generated/data/minecraft/item/lapis_ore.json index ecf0febf..373acad2 100644 --- a/src/main/generated/data/minecraft/item/lapis_ore.json +++ b/src/main/generated/data/minecraft/item/lapis_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lapis_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lapis_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lapis_ore", + "translation_key": "block.minecraft.lapis_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/large_amethyst_bud.json b/src/main/generated/data/minecraft/item/large_amethyst_bud.json index 3b61bc52..9c6361ec 100644 --- a/src/main/generated/data/minecraft/item/large_amethyst_bud.json +++ b/src/main/generated/data/minecraft/item/large_amethyst_bud.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.large_amethyst_bud" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:large_amethyst_bud" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:large_amethyst_bud", + "translation_key": "block.minecraft.large_amethyst_bud" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/large_fern.json b/src/main/generated/data/minecraft/item/large_fern.json index 74e380ab..f1429edb 100644 --- a/src/main/generated/data/minecraft/item/large_fern.json +++ b/src/main/generated/data/minecraft/item/large_fern.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.large_fern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:large_fern" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:large_fern", + "translation_key": "block.minecraft.large_fern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lava_bucket.json b/src/main/generated/data/minecraft/item/lava_bucket.json index 93c4de58..4c4dbb1c 100644 --- a/src/main/generated/data/minecraft/item/lava_bucket.json +++ b/src/main/generated/data/minecraft/item/lava_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.lava_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_lava", "fluid": "minecraft:lava", @@ -19,5 +16,9 @@ "ticks": 20000 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:lava_bucket", + "translation_key": "item.minecraft.lava_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lead.json b/src/main/generated/data/minecraft/item/lead.json index b2040c18..108115fb 100644 --- a/src/main/generated/data/minecraft/item/lead.json +++ b/src/main/generated/data/minecraft/item/lead.json @@ -1,10 +1,11 @@ { - "base": { - "translation_key": "item.minecraft.lead" - }, - "components": { + "behavior": { "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:lead", + "translation_key": "item.minecraft.lead" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/leather.json b/src/main/generated/data/minecraft/item/leather.json index 1b748820..de9d297d 100644 --- a/src/main/generated/data/minecraft/item/leather.json +++ b/src/main/generated/data/minecraft/item/leather.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.leather" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:leather", + "translation_key": "item.minecraft.leather" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_boots.json b/src/main/generated/data/minecraft/item/leather_boots.json index 88da1961..e873baa8 100644 --- a/src/main/generated/data/minecraft/item/leather_boots.json +++ b/src/main/generated/data/minecraft/item/leather_boots.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.leather_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:leather" + "attribute_id": "minecraft:armor.boots", + "defense": 1, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 65 @@ -20,6 +20,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", + "model": "minecraft:leather", "slot": "feet", "swappable": true }, @@ -33,5 +34,9 @@ "index": 0 } } + }, + "display": { + "model": "minecraft:leather_boots", + "translation_key": "item.minecraft.leather_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_chestplate.json b/src/main/generated/data/minecraft/item/leather_chestplate.json index f983145c..edc204bf 100644 --- a/src/main/generated/data/minecraft/item/leather_chestplate.json +++ b/src/main/generated/data/minecraft/item/leather_chestplate.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.leather_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:leather" + "attribute_id": "minecraft:armor.chestplate", + "defense": 3, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 80 @@ -20,6 +20,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", + "model": "minecraft:leather", "slot": "chest", "swappable": true }, @@ -33,5 +34,9 @@ "index": 0 } } + }, + "display": { + "model": "minecraft:leather_chestplate", + "translation_key": "item.minecraft.leather_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_helmet.json b/src/main/generated/data/minecraft/item/leather_helmet.json index b9768e0e..05c9ebce 100644 --- a/src/main/generated/data/minecraft/item/leather_helmet.json +++ b/src/main/generated/data/minecraft/item/leather_helmet.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.leather_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:leather" + "attribute_id": "minecraft:armor.helmet", + "defense": 1, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 55 @@ -20,6 +20,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", + "model": "minecraft:leather", "slot": "head", "swappable": true }, @@ -33,5 +34,9 @@ "index": 0 } } + }, + "display": { + "model": "minecraft:leather_helmet", + "translation_key": "item.minecraft.leather_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_horse_armor.json b/src/main/generated/data/minecraft/item/leather_horse_armor.json index 2a206724..d41513f3 100644 --- a/src/main/generated/data/minecraft/item/leather_horse_armor.json +++ b/src/main/generated/data/minecraft/item/leather_horse_armor.json @@ -1,11 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.leather_horse_armor" - }, - "components": { + "behavior": { "minecraft:armor": { - "armor_type": "equestrian", - "material": "minecraft:leather" + "attribute_id": "minecraft:armor.body", + "defense": 3, + "knockback_resistance": 0.0, + "toughness": 0.0 + }, + "minecraft:damageable": { + "break_sound": "minecraft:entity.item.break", + "durability": 80 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -14,8 +17,11 @@ "default_color": -6265536 }, "minecraft:equipment": { + "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_leather", - "slot": "body" + "model": "minecraft:leather", + "slot": "body", + "swappable": true }, "minecraft:stackable": 1, "minecraft:tinted": { @@ -24,5 +30,9 @@ "index": 0 } } + }, + "display": { + "model": "minecraft:leather_horse_armor", + "translation_key": "item.minecraft.leather_horse_armor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/leather_leggings.json b/src/main/generated/data/minecraft/item/leather_leggings.json index 447a0daa..2a10f8c1 100644 --- a/src/main/generated/data/minecraft/item/leather_leggings.json +++ b/src/main/generated/data/minecraft/item/leather_leggings.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.leather_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:leather" + "attribute_id": "minecraft:armor.leggings", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 75 @@ -20,6 +20,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", + "model": "minecraft:leather", "slot": "legs", "swappable": true }, @@ -33,5 +34,9 @@ "index": 0 } } + }, + "display": { + "model": "minecraft:leather_leggings", + "translation_key": "item.minecraft.leather_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lectern.json b/src/main/generated/data/minecraft/item/lectern.json index bb05310a..a7211543 100644 --- a/src/main/generated/data/minecraft/item/lectern.json +++ b/src/main/generated/data/minecraft/item/lectern.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lectern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lectern" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lectern", + "translation_key": "block.minecraft.lectern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lever.json b/src/main/generated/data/minecraft/item/lever.json index e7779012..1479ec86 100644 --- a/src/main/generated/data/minecraft/item/lever.json +++ b/src/main/generated/data/minecraft/item/lever.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lever" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lever" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lever", + "translation_key": "block.minecraft.lever" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light.json b/src/main/generated/data/minecraft/item/light.json index b6ed2359..b0eb02d5 100644 --- a/src/main/generated/data/minecraft/item/light.json +++ b/src/main/generated/data/minecraft/item/light.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.light" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light", + "rarity": "epic", + "translation_key": "block.minecraft.light" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_banner.json b/src/main/generated/data/minecraft/item/light_blue_banner.json index f3584895..a243ef1b 100644 --- a/src/main/generated/data/minecraft/item/light_blue_banner.json +++ b/src/main/generated/data/minecraft/item/light_blue_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "light_blue" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:light_blue_banner", + "translation_key": "block.minecraft.light_blue_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_bed.json b/src/main/generated/data/minecraft/item/light_blue_bed.json index f3b0e3fa..a0febb56 100644 --- a/src/main/generated/data/minecraft/item/light_blue_bed.json +++ b/src/main/generated/data/minecraft/item/light_blue_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:light_blue_bed", + "translation_key": "block.minecraft.light_blue_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_candle.json b/src/main/generated/data/minecraft/item/light_blue_candle.json index e8b8bde9..fee06704 100644 --- a/src/main/generated/data/minecraft/item/light_blue_candle.json +++ b/src/main/generated/data/minecraft/item/light_blue_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_candle", + "translation_key": "block.minecraft.light_blue_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_carpet.json b/src/main/generated/data/minecraft/item/light_blue_carpet.json index ccc755f6..0a0c47c0 100644 --- a/src/main/generated/data/minecraft/item/light_blue_carpet.json +++ b/src/main/generated/data/minecraft/item/light_blue_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:light_blue_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_carpet", + "translation_key": "block.minecraft.light_blue_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_concrete.json b/src/main/generated/data/minecraft/item/light_blue_concrete.json index 27a00dc9..956dd2c3 100644 --- a/src/main/generated/data/minecraft/item/light_blue_concrete.json +++ b/src/main/generated/data/minecraft/item/light_blue_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_concrete", + "translation_key": "block.minecraft.light_blue_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_concrete_powder.json b/src/main/generated/data/minecraft/item/light_blue_concrete_powder.json index a9bbe704..bd54df22 100644 --- a/src/main/generated/data/minecraft/item/light_blue_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/light_blue_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_concrete_powder", + "translation_key": "block.minecraft.light_blue_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_dye.json b/src/main/generated/data/minecraft/item/light_blue_dye.json index c0671f1c..05724675 100644 --- a/src/main/generated/data/minecraft/item/light_blue_dye.json +++ b/src/main/generated/data/minecraft/item/light_blue_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.light_blue_dye" - }, - "components": { + "behavior": { "minecraft:dye": "light_blue", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_dye", + "translation_key": "item.minecraft.light_blue_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_glazed_terracotta.json b/src/main/generated/data/minecraft/item/light_blue_glazed_terracotta.json index 594d1278..19a4ca72 100644 --- a/src/main/generated/data/minecraft/item/light_blue_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/light_blue_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_glazed_terracotta", + "translation_key": "block.minecraft.light_blue_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_shulker_box.json b/src/main/generated/data/minecraft/item/light_blue_shulker_box.json index 1d2a0b7f..292baf36 100644 --- a/src/main/generated/data/minecraft/item/light_blue_shulker_box.json +++ b/src/main/generated/data/minecraft/item/light_blue_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:light_blue_shulker_box", + "translation_key": "block.minecraft.light_blue_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_stained_glass.json b/src/main/generated/data/minecraft/item/light_blue_stained_glass.json index 828be051..86c5e0dc 100644 --- a/src/main/generated/data/minecraft/item/light_blue_stained_glass.json +++ b/src/main/generated/data/minecraft/item/light_blue_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_stained_glass", + "translation_key": "block.minecraft.light_blue_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_stained_glass_pane.json b/src/main/generated/data/minecraft/item/light_blue_stained_glass_pane.json index a5662583..29108b3d 100644 --- a/src/main/generated/data/minecraft/item/light_blue_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/light_blue_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_stained_glass_pane", + "translation_key": "block.minecraft.light_blue_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_terracotta.json b/src/main/generated/data/minecraft/item/light_blue_terracotta.json index 7296c5be..364c9a6e 100644 --- a/src/main/generated/data/minecraft/item/light_blue_terracotta.json +++ b/src/main/generated/data/minecraft/item/light_blue_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_terracotta", + "translation_key": "block.minecraft.light_blue_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_blue_wool.json b/src/main/generated/data/minecraft/item/light_blue_wool.json index 63368862..9236fda0 100644 --- a/src/main/generated/data/minecraft/item/light_blue_wool.json +++ b/src/main/generated/data/minecraft/item/light_blue_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_blue_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_blue_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_blue_wool", + "translation_key": "block.minecraft.light_blue_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_banner.json b/src/main/generated/data/minecraft/item/light_gray_banner.json index 317bfebb..b4998291 100644 --- a/src/main/generated/data/minecraft/item/light_gray_banner.json +++ b/src/main/generated/data/minecraft/item/light_gray_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "light_gray" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:light_gray_banner", + "translation_key": "block.minecraft.light_gray_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_bed.json b/src/main/generated/data/minecraft/item/light_gray_bed.json index 578ae0f4..32358fff 100644 --- a/src/main/generated/data/minecraft/item/light_gray_bed.json +++ b/src/main/generated/data/minecraft/item/light_gray_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:light_gray_bed", + "translation_key": "block.minecraft.light_gray_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_candle.json b/src/main/generated/data/minecraft/item/light_gray_candle.json index 375bce53..99892b2f 100644 --- a/src/main/generated/data/minecraft/item/light_gray_candle.json +++ b/src/main/generated/data/minecraft/item/light_gray_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_candle", + "translation_key": "block.minecraft.light_gray_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_carpet.json b/src/main/generated/data/minecraft/item/light_gray_carpet.json index 346c4ae7..f2f6eece 100644 --- a/src/main/generated/data/minecraft/item/light_gray_carpet.json +++ b/src/main/generated/data/minecraft/item/light_gray_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:light_gray_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_carpet", + "translation_key": "block.minecraft.light_gray_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_concrete.json b/src/main/generated/data/minecraft/item/light_gray_concrete.json index 5a181d6e..032e7999 100644 --- a/src/main/generated/data/minecraft/item/light_gray_concrete.json +++ b/src/main/generated/data/minecraft/item/light_gray_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_concrete", + "translation_key": "block.minecraft.light_gray_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_concrete_powder.json b/src/main/generated/data/minecraft/item/light_gray_concrete_powder.json index 35018ed3..c0caccca 100644 --- a/src/main/generated/data/minecraft/item/light_gray_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/light_gray_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_concrete_powder", + "translation_key": "block.minecraft.light_gray_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_dye.json b/src/main/generated/data/minecraft/item/light_gray_dye.json index 88770546..b2a68b0a 100644 --- a/src/main/generated/data/minecraft/item/light_gray_dye.json +++ b/src/main/generated/data/minecraft/item/light_gray_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.light_gray_dye" - }, - "components": { + "behavior": { "minecraft:dye": "light_gray", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_dye", + "translation_key": "item.minecraft.light_gray_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_glazed_terracotta.json b/src/main/generated/data/minecraft/item/light_gray_glazed_terracotta.json index 0742d02d..f66b8218 100644 --- a/src/main/generated/data/minecraft/item/light_gray_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/light_gray_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_glazed_terracotta", + "translation_key": "block.minecraft.light_gray_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_shulker_box.json b/src/main/generated/data/minecraft/item/light_gray_shulker_box.json index 403f41bf..80dce0f3 100644 --- a/src/main/generated/data/minecraft/item/light_gray_shulker_box.json +++ b/src/main/generated/data/minecraft/item/light_gray_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:light_gray_shulker_box", + "translation_key": "block.minecraft.light_gray_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_stained_glass.json b/src/main/generated/data/minecraft/item/light_gray_stained_glass.json index 9252d520..61c1a639 100644 --- a/src/main/generated/data/minecraft/item/light_gray_stained_glass.json +++ b/src/main/generated/data/minecraft/item/light_gray_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_stained_glass", + "translation_key": "block.minecraft.light_gray_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_stained_glass_pane.json b/src/main/generated/data/minecraft/item/light_gray_stained_glass_pane.json index 4a9b8db2..c1deb7e8 100644 --- a/src/main/generated/data/minecraft/item/light_gray_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/light_gray_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_stained_glass_pane", + "translation_key": "block.minecraft.light_gray_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_terracotta.json b/src/main/generated/data/minecraft/item/light_gray_terracotta.json index 4ebdeeec..c0c349ef 100644 --- a/src/main/generated/data/minecraft/item/light_gray_terracotta.json +++ b/src/main/generated/data/minecraft/item/light_gray_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_terracotta", + "translation_key": "block.minecraft.light_gray_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_wool.json b/src/main/generated/data/minecraft/item/light_gray_wool.json index 85789a06..e4d88656 100644 --- a/src/main/generated/data/minecraft/item/light_gray_wool.json +++ b/src/main/generated/data/minecraft/item/light_gray_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.light_gray_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_gray_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_gray_wool", + "translation_key": "block.minecraft.light_gray_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_weighted_pressure_plate.json b/src/main/generated/data/minecraft/item/light_weighted_pressure_plate.json index dfe06947..eaac5abd 100644 --- a/src/main/generated/data/minecraft/item/light_weighted_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/light_weighted_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.light_weighted_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:light_weighted_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:light_weighted_pressure_plate", + "translation_key": "block.minecraft.light_weighted_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lightning_rod.json b/src/main/generated/data/minecraft/item/lightning_rod.json index 63e029f0..5a8ba723 100644 --- a/src/main/generated/data/minecraft/item/lightning_rod.json +++ b/src/main/generated/data/minecraft/item/lightning_rod.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lightning_rod" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lightning_rod" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lightning_rod", + "translation_key": "block.minecraft.lightning_rod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lilac.json b/src/main/generated/data/minecraft/item/lilac.json index 13cc030c..e84beaa9 100644 --- a/src/main/generated/data/minecraft/item/lilac.json +++ b/src/main/generated/data/minecraft/item/lilac.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lilac" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lilac" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lilac", + "translation_key": "block.minecraft.lilac" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lily_of_the_valley.json b/src/main/generated/data/minecraft/item/lily_of_the_valley.json index 9f4bc0a6..2dde18f1 100644 --- a/src/main/generated/data/minecraft/item/lily_of_the_valley.json +++ b/src/main/generated/data/minecraft/item/lily_of_the_valley.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lily_of_the_valley" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lily_of_the_valley" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:lily_of_the_valley", + "translation_key": "block.minecraft.lily_of_the_valley" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/lily_pad.json b/src/main/generated/data/minecraft/item/lily_pad.json index 195080c3..06607b0f 100644 --- a/src/main/generated/data/minecraft/item/lily_pad.json +++ b/src/main/generated/data/minecraft/item/lily_pad.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lily_pad" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lily_pad", "passes": [ @@ -19,5 +16,9 @@ "color": -9321636 } } + }, + "display": { + "model": "minecraft:lily_pad", + "translation_key": "block.minecraft.lily_pad" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_banner.json b/src/main/generated/data/minecraft/item/lime_banner.json index 792f91d6..1086c00b 100644 --- a/src/main/generated/data/minecraft/item/lime_banner.json +++ b/src/main/generated/data/minecraft/item/lime_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lime_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "lime" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:lime_banner", + "translation_key": "block.minecraft.lime_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_bed.json b/src/main/generated/data/minecraft/item/lime_bed.json index 235340c4..bfb67ce8 100644 --- a/src/main/generated/data/minecraft/item/lime_bed.json +++ b/src/main/generated/data/minecraft/item/lime_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:lime_bed", + "translation_key": "block.minecraft.lime_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_candle.json b/src/main/generated/data/minecraft/item/lime_candle.json index 062ff4a3..f561dc73 100644 --- a/src/main/generated/data/minecraft/item/lime_candle.json +++ b/src/main/generated/data/minecraft/item/lime_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_candle", + "translation_key": "block.minecraft.lime_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_carpet.json b/src/main/generated/data/minecraft/item/lime_carpet.json index 5ce1d82a..157f7674 100644 --- a/src/main/generated/data/minecraft/item/lime_carpet.json +++ b/src/main/generated/data/minecraft/item/lime_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lime_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:lime_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_carpet", + "translation_key": "block.minecraft.lime_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_concrete.json b/src/main/generated/data/minecraft/item/lime_concrete.json index 0d33f217..bd180d3d 100644 --- a/src/main/generated/data/minecraft/item/lime_concrete.json +++ b/src/main/generated/data/minecraft/item/lime_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_concrete", + "translation_key": "block.minecraft.lime_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_concrete_powder.json b/src/main/generated/data/minecraft/item/lime_concrete_powder.json index 47f3e6db..d2442638 100644 --- a/src/main/generated/data/minecraft/item/lime_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/lime_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_concrete_powder", + "translation_key": "block.minecraft.lime_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_dye.json b/src/main/generated/data/minecraft/item/lime_dye.json index d073e112..8ad8521c 100644 --- a/src/main/generated/data/minecraft/item/lime_dye.json +++ b/src/main/generated/data/minecraft/item/lime_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.lime_dye" - }, - "components": { + "behavior": { "minecraft:dye": "lime", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_dye", + "translation_key": "item.minecraft.lime_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_glazed_terracotta.json b/src/main/generated/data/minecraft/item/lime_glazed_terracotta.json index c6c107a8..32c1164a 100644 --- a/src/main/generated/data/minecraft/item/lime_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/lime_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_glazed_terracotta", + "translation_key": "block.minecraft.lime_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_shulker_box.json b/src/main/generated/data/minecraft/item/lime_shulker_box.json index 965c8f2f..57796afb 100644 --- a/src/main/generated/data/minecraft/item/lime_shulker_box.json +++ b/src/main/generated/data/minecraft/item/lime_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lime_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:lime_shulker_box", + "translation_key": "block.minecraft.lime_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_stained_glass.json b/src/main/generated/data/minecraft/item/lime_stained_glass.json index c09005a5..aa31cd70 100644 --- a/src/main/generated/data/minecraft/item/lime_stained_glass.json +++ b/src/main/generated/data/minecraft/item/lime_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_stained_glass", + "translation_key": "block.minecraft.lime_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_stained_glass_pane.json b/src/main/generated/data/minecraft/item/lime_stained_glass_pane.json index 0da9c29b..110b4754 100644 --- a/src/main/generated/data/minecraft/item/lime_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/lime_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_stained_glass_pane", + "translation_key": "block.minecraft.lime_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_terracotta.json b/src/main/generated/data/minecraft/item/lime_terracotta.json index 6b8815ff..64d866c6 100644 --- a/src/main/generated/data/minecraft/item/lime_terracotta.json +++ b/src/main/generated/data/minecraft/item/lime_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lime_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_terracotta", + "translation_key": "block.minecraft.lime_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_wool.json b/src/main/generated/data/minecraft/item/lime_wool.json index cd485b1c..af91e9fe 100644 --- a/src/main/generated/data/minecraft/item/lime_wool.json +++ b/src/main/generated/data/minecraft/item/lime_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.lime_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lime_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lime_wool", + "translation_key": "block.minecraft.lime_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lingering_potion.json b/src/main/generated/data/minecraft/item/lingering_potion.json index c356343d..dce6fcc6 100644 --- a/src/main/generated/data/minecraft/item/lingering_potion.json +++ b/src/main/generated/data/minecraft/item/lingering_potion.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.lingering_potion" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_bottle" }, @@ -24,5 +21,9 @@ "type": "minecraft:potion" } } + }, + "display": { + "model": "minecraft:lingering_potion", + "translation_key": "item.minecraft.lingering_potion" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/llama_spawn_egg.json b/src/main/generated/data/minecraft/item/llama_spawn_egg.json index f54207d5..ffdd15f2 100644 --- a/src/main/generated/data/minecraft/item/llama_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/llama_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.llama_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:llama_spawn_egg", + "translation_key": "item.minecraft.llama_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lodestone.json b/src/main/generated/data/minecraft/item/lodestone.json index d7ea5bb2..a87e8615 100644 --- a/src/main/generated/data/minecraft/item/lodestone.json +++ b/src/main/generated/data/minecraft/item/lodestone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.lodestone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:lodestone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:lodestone", + "translation_key": "block.minecraft.lodestone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/loom.json b/src/main/generated/data/minecraft/item/loom.json index 7f645f0e..9b116dab 100644 --- a/src/main/generated/data/minecraft/item/loom.json +++ b/src/main/generated/data/minecraft/item/loom.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.loom" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:loom" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:loom", + "translation_key": "block.minecraft.loom" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mace.json b/src/main/generated/data/minecraft/item/mace.json index dc06188c..8997490a 100644 --- a/src/main/generated/data/minecraft/item/mace.json +++ b/src/main/generated/data/minecraft/item/mace.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "epic", - "translation_key": "item.minecraft.mace" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 500 }, @@ -26,5 +22,10 @@ "attack_speed": 0.15, "may_smash": true } + }, + "display": { + "model": "minecraft:mace", + "rarity": "epic", + "translation_key": "item.minecraft.mace" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_banner.json b/src/main/generated/data/minecraft/item/magenta_banner.json index d988c531..7a6353d6 100644 --- a/src/main/generated/data/minecraft/item/magenta_banner.json +++ b/src/main/generated/data/minecraft/item/magenta_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.magenta_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "magenta" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:magenta_banner", + "translation_key": "block.minecraft.magenta_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_bed.json b/src/main/generated/data/minecraft/item/magenta_bed.json index d629ba63..6b48a1e5 100644 --- a/src/main/generated/data/minecraft/item/magenta_bed.json +++ b/src/main/generated/data/minecraft/item/magenta_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:magenta_bed", + "translation_key": "block.minecraft.magenta_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_candle.json b/src/main/generated/data/minecraft/item/magenta_candle.json index 797771eb..cfe292dd 100644 --- a/src/main/generated/data/minecraft/item/magenta_candle.json +++ b/src/main/generated/data/minecraft/item/magenta_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_candle", + "translation_key": "block.minecraft.magenta_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_carpet.json b/src/main/generated/data/minecraft/item/magenta_carpet.json index 6504e622..8474f2ec 100644 --- a/src/main/generated/data/minecraft/item/magenta_carpet.json +++ b/src/main/generated/data/minecraft/item/magenta_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.magenta_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:magenta_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_carpet", + "translation_key": "block.minecraft.magenta_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_concrete.json b/src/main/generated/data/minecraft/item/magenta_concrete.json index 62a5b099..240b7930 100644 --- a/src/main/generated/data/minecraft/item/magenta_concrete.json +++ b/src/main/generated/data/minecraft/item/magenta_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_concrete", + "translation_key": "block.minecraft.magenta_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_concrete_powder.json b/src/main/generated/data/minecraft/item/magenta_concrete_powder.json index 86cf1fe8..2506b286 100644 --- a/src/main/generated/data/minecraft/item/magenta_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/magenta_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_concrete_powder", + "translation_key": "block.minecraft.magenta_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_dye.json b/src/main/generated/data/minecraft/item/magenta_dye.json index 793a6e42..eee7c9ad 100644 --- a/src/main/generated/data/minecraft/item/magenta_dye.json +++ b/src/main/generated/data/minecraft/item/magenta_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.magenta_dye" - }, - "components": { + "behavior": { "minecraft:dye": "magenta", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_dye", + "translation_key": "item.minecraft.magenta_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_glazed_terracotta.json b/src/main/generated/data/minecraft/item/magenta_glazed_terracotta.json index 3d6317bf..06524bb6 100644 --- a/src/main/generated/data/minecraft/item/magenta_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/magenta_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_glazed_terracotta", + "translation_key": "block.minecraft.magenta_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_shulker_box.json b/src/main/generated/data/minecraft/item/magenta_shulker_box.json index cae80693..2b5e30cb 100644 --- a/src/main/generated/data/minecraft/item/magenta_shulker_box.json +++ b/src/main/generated/data/minecraft/item/magenta_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.magenta_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:magenta_shulker_box", + "translation_key": "block.minecraft.magenta_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_stained_glass.json b/src/main/generated/data/minecraft/item/magenta_stained_glass.json index b8c0b686..1893792f 100644 --- a/src/main/generated/data/minecraft/item/magenta_stained_glass.json +++ b/src/main/generated/data/minecraft/item/magenta_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_stained_glass", + "translation_key": "block.minecraft.magenta_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_stained_glass_pane.json b/src/main/generated/data/minecraft/item/magenta_stained_glass_pane.json index 77c720c0..811d1a0b 100644 --- a/src/main/generated/data/minecraft/item/magenta_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/magenta_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_stained_glass_pane", + "translation_key": "block.minecraft.magenta_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_terracotta.json b/src/main/generated/data/minecraft/item/magenta_terracotta.json index cc642c24..107435cd 100644 --- a/src/main/generated/data/minecraft/item/magenta_terracotta.json +++ b/src/main/generated/data/minecraft/item/magenta_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magenta_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_terracotta", + "translation_key": "block.minecraft.magenta_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_wool.json b/src/main/generated/data/minecraft/item/magenta_wool.json index 386e3193..c696f760 100644 --- a/src/main/generated/data/minecraft/item/magenta_wool.json +++ b/src/main/generated/data/minecraft/item/magenta_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.magenta_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magenta_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magenta_wool", + "translation_key": "block.minecraft.magenta_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magma_block.json b/src/main/generated/data/minecraft/item/magma_block.json index 9df295c6..d7c66577 100644 --- a/src/main/generated/data/minecraft/item/magma_block.json +++ b/src/main/generated/data/minecraft/item/magma_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.magma_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:magma_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magma_block", + "translation_key": "block.minecraft.magma_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magma_cream.json b/src/main/generated/data/minecraft/item/magma_cream.json index 6fc0656d..69b281b4 100644 --- a/src/main/generated/data/minecraft/item/magma_cream.json +++ b/src/main/generated/data/minecraft/item/magma_cream.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.magma_cream" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:magma_cream", + "translation_key": "item.minecraft.magma_cream" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json b/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json index 5451f91e..2e0d16aa 100644 --- a/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/magma_cube_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.magma_cube_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:magma_cube_spawn_egg", + "translation_key": "item.minecraft.magma_cube_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_boat.json b/src/main/generated/data/minecraft/item/mangrove_boat.json index e2bad542..824e4393 100644 --- a/src/main/generated/data/minecraft/item/mangrove_boat.json +++ b/src/main/generated/data/minecraft/item/mangrove_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mangrove_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:mangrove_boat", + "translation_key": "item.minecraft.mangrove_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_button.json b/src/main/generated/data/minecraft/item/mangrove_button.json index 3816648b..4ecb6cb6 100644 --- a/src/main/generated/data/minecraft/item/mangrove_button.json +++ b/src/main/generated/data/minecraft/item/mangrove_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_button", + "translation_key": "block.minecraft.mangrove_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_chest_boat.json b/src/main/generated/data/minecraft/item/mangrove_chest_boat.json index 6906e372..5694c5e1 100644 --- a/src/main/generated/data/minecraft/item/mangrove_chest_boat.json +++ b/src/main/generated/data/minecraft/item/mangrove_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mangrove_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:mangrove_chest_boat", + "translation_key": "item.minecraft.mangrove_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_door.json b/src/main/generated/data/minecraft/item/mangrove_door.json index fba0d4c1..23983f9a 100644 --- a/src/main/generated/data/minecraft/item/mangrove_door.json +++ b/src/main/generated/data/minecraft/item/mangrove_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_door", + "translation_key": "block.minecraft.mangrove_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_fence.json b/src/main/generated/data/minecraft/item/mangrove_fence.json index 028791a9..8d540aa4 100644 --- a/src/main/generated/data/minecraft/item/mangrove_fence.json +++ b/src/main/generated/data/minecraft/item/mangrove_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_fence", + "translation_key": "block.minecraft.mangrove_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_fence_gate.json b/src/main/generated/data/minecraft/item/mangrove_fence_gate.json index 3597bf9e..a2ff27ac 100644 --- a/src/main/generated/data/minecraft/item/mangrove_fence_gate.json +++ b/src/main/generated/data/minecraft/item/mangrove_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_fence_gate", + "translation_key": "block.minecraft.mangrove_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_hanging_sign.json b/src/main/generated/data/minecraft/item/mangrove_hanging_sign.json index 853487f4..7daa72f9 100644 --- a/src/main/generated/data/minecraft/item/mangrove_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/mangrove_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:mangrove_hanging_sign", + "translation_key": "block.minecraft.mangrove_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_leaves.json b/src/main/generated/data/minecraft/item/mangrove_leaves.json index e2f3c0ee..34cfea16 100644 --- a/src/main/generated/data/minecraft/item/mangrove_leaves.json +++ b/src/main/generated/data/minecraft/item/mangrove_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_leaves" }, @@ -16,5 +13,9 @@ "color": -7158200 } } + }, + "display": { + "model": "minecraft:mangrove_leaves", + "translation_key": "block.minecraft.mangrove_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_log.json b/src/main/generated/data/minecraft/item/mangrove_log.json index c9f3351f..f6b1219b 100644 --- a/src/main/generated/data/minecraft/item/mangrove_log.json +++ b/src/main/generated/data/minecraft/item/mangrove_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_log", + "translation_key": "block.minecraft.mangrove_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_planks.json b/src/main/generated/data/minecraft/item/mangrove_planks.json index 4100c214..1c62f840 100644 --- a/src/main/generated/data/minecraft/item/mangrove_planks.json +++ b/src/main/generated/data/minecraft/item/mangrove_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_planks", + "translation_key": "block.minecraft.mangrove_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_pressure_plate.json b/src/main/generated/data/minecraft/item/mangrove_pressure_plate.json index 4329a1be..68ecf49e 100644 --- a/src/main/generated/data/minecraft/item/mangrove_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/mangrove_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_pressure_plate", + "translation_key": "block.minecraft.mangrove_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_propagule.json b/src/main/generated/data/minecraft/item/mangrove_propagule.json index f7a0e88f..9a00a710 100644 --- a/src/main/generated/data/minecraft/item/mangrove_propagule.json +++ b/src/main/generated/data/minecraft/item/mangrove_propagule.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_propagule" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_propagule" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:mangrove_propagule", + "translation_key": "block.minecraft.mangrove_propagule" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/mangrove_roots.json b/src/main/generated/data/minecraft/item/mangrove_roots.json index bf7e69b2..412ac1ec 100644 --- a/src/main/generated/data/minecraft/item/mangrove_roots.json +++ b/src/main/generated/data/minecraft/item/mangrove_roots.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_roots" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_roots" }, @@ -13,5 +10,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_roots", + "translation_key": "block.minecraft.mangrove_roots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_sign.json b/src/main/generated/data/minecraft/item/mangrove_sign.json index a59e5481..52c3904a 100644 --- a/src/main/generated/data/minecraft/item/mangrove_sign.json +++ b/src/main/generated/data/minecraft/item/mangrove_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:mangrove_sign", + "translation_key": "block.minecraft.mangrove_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_slab.json b/src/main/generated/data/minecraft/item/mangrove_slab.json index 9b80e230..3ba45037 100644 --- a/src/main/generated/data/minecraft/item/mangrove_slab.json +++ b/src/main/generated/data/minecraft/item/mangrove_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_slab", + "translation_key": "block.minecraft.mangrove_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_stairs.json b/src/main/generated/data/minecraft/item/mangrove_stairs.json index 34f454b1..10ee8ef2 100644 --- a/src/main/generated/data/minecraft/item/mangrove_stairs.json +++ b/src/main/generated/data/minecraft/item/mangrove_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_stairs", + "translation_key": "block.minecraft.mangrove_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_trapdoor.json b/src/main/generated/data/minecraft/item/mangrove_trapdoor.json index cfca52b9..63256820 100644 --- a/src/main/generated/data/minecraft/item/mangrove_trapdoor.json +++ b/src/main/generated/data/minecraft/item/mangrove_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_trapdoor", + "translation_key": "block.minecraft.mangrove_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mangrove_wood.json b/src/main/generated/data/minecraft/item/mangrove_wood.json index 4a912d4c..3d479599 100644 --- a/src/main/generated/data/minecraft/item/mangrove_wood.json +++ b/src/main/generated/data/minecraft/item/mangrove_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mangrove_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mangrove_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mangrove_wood", + "translation_key": "block.minecraft.mangrove_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/map.json b/src/main/generated/data/minecraft/item/map.json index 772e8cc6..b4e6aaf3 100644 --- a/src/main/generated/data/minecraft/item/map.json +++ b/src/main/generated/data/minecraft/item/map.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.map" - }, - "components": { + "behavior": { "minecraft:mappable": { "transforms_into": "minecraft:filled_map" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:map", + "translation_key": "item.minecraft.map" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/medium_amethyst_bud.json b/src/main/generated/data/minecraft/item/medium_amethyst_bud.json index 4ccc7583..e330bbfd 100644 --- a/src/main/generated/data/minecraft/item/medium_amethyst_bud.json +++ b/src/main/generated/data/minecraft/item/medium_amethyst_bud.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.medium_amethyst_bud" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:medium_amethyst_bud" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:medium_amethyst_bud", + "translation_key": "block.minecraft.medium_amethyst_bud" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/melon.json b/src/main/generated/data/minecraft/item/melon.json index 6d50513a..6cd6c7ff 100644 --- a/src/main/generated/data/minecraft/item/melon.json +++ b/src/main/generated/data/minecraft/item/melon.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.melon" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:melon" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:melon", + "translation_key": "block.minecraft.melon" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/melon_seeds.json b/src/main/generated/data/minecraft/item/melon_seeds.json index 730baf5e..a0a6d60d 100644 --- a/src/main/generated/data/minecraft/item/melon_seeds.json +++ b/src/main/generated/data/minecraft/item/melon_seeds.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.melon_seeds" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:melon_stem" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:melon_seeds", + "translation_key": "item.minecraft.melon_seeds" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/melon_slice.json b/src/main/generated/data/minecraft/item/melon_slice.json index 35af8a09..789d50e7 100644 --- a/src/main/generated/data/minecraft/item/melon_slice.json +++ b/src/main/generated/data/minecraft/item/melon_slice.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.melon_slice" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.5 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:melon_slice", + "translation_key": "item.minecraft.melon_slice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/milk_bucket.json b/src/main/generated/data/minecraft/item/milk_bucket.json index a644b23d..7ec4ae27 100644 --- a/src/main/generated/data/minecraft/item/milk_bucket.json +++ b/src/main/generated/data/minecraft/item/milk_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.milk_bucket" - }, - "components": { + "behavior": { "minecraft:consumable": { "has_consume_particles": false, "sound": "minecraft:entity.generic.drink" @@ -20,6 +17,10 @@ } } }, + "display": { + "model": "minecraft:milk_bucket", + "translation_key": "item.minecraft.milk_bucket" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/minecart.json b/src/main/generated/data/minecraft/item/minecart.json index 1e73a66e..962a8cd1 100644 --- a/src/main/generated/data/minecraft/item/minecart.json +++ b/src/main/generated/data/minecraft/item/minecart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:minecart", + "translation_key": "item.minecraft.minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/miner_pottery_sherd.json b/src/main/generated/data/minecraft/item/miner_pottery_sherd.json index 7a6da38e..465831a0 100644 --- a/src/main/generated/data/minecraft/item/miner_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/miner_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.miner_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:miner" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:miner_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.miner_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mojang_banner_pattern.json b/src/main/generated/data/minecraft/item/mojang_banner_pattern.json index 18f4a055..38f1d927 100644 --- a/src/main/generated/data/minecraft/item/mojang_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/mojang_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.mojang_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/mojang" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:mojang_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.mojang_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json b/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json index d1dd3bd9..d240c0d1 100644 --- a/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/mooshroom_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mooshroom_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:mooshroom_spawn_egg", + "translation_key": "item.minecraft.mooshroom_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/moss_block.json b/src/main/generated/data/minecraft/item/moss_block.json index 200f7f9b..cb5bb235 100644 --- a/src/main/generated/data/minecraft/item/moss_block.json +++ b/src/main/generated/data/minecraft/item/moss_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.moss_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:moss_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:moss_block", + "translation_key": "block.minecraft.moss_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/moss_carpet.json b/src/main/generated/data/minecraft/item/moss_carpet.json index 18dcca72..e28837d4 100644 --- a/src/main/generated/data/minecraft/item/moss_carpet.json +++ b/src/main/generated/data/minecraft/item/moss_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.moss_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:moss_carpet" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:moss_carpet", + "translation_key": "block.minecraft.moss_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_cobblestone.json b/src/main/generated/data/minecraft/item/mossy_cobblestone.json index b8bb0854..438a30e3 100644 --- a/src/main/generated/data/minecraft/item/mossy_cobblestone.json +++ b/src/main/generated/data/minecraft/item/mossy_cobblestone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_cobblestone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_cobblestone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_cobblestone", + "translation_key": "block.minecraft.mossy_cobblestone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_cobblestone_slab.json b/src/main/generated/data/minecraft/item/mossy_cobblestone_slab.json index 4ed4cc9d..a4091f87 100644 --- a/src/main/generated/data/minecraft/item/mossy_cobblestone_slab.json +++ b/src/main/generated/data/minecraft/item/mossy_cobblestone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_cobblestone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_cobblestone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_cobblestone_slab", + "translation_key": "block.minecraft.mossy_cobblestone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_cobblestone_stairs.json b/src/main/generated/data/minecraft/item/mossy_cobblestone_stairs.json index e6d7abf3..6c561b75 100644 --- a/src/main/generated/data/minecraft/item/mossy_cobblestone_stairs.json +++ b/src/main/generated/data/minecraft/item/mossy_cobblestone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_cobblestone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_cobblestone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_cobblestone_stairs", + "translation_key": "block.minecraft.mossy_cobblestone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_cobblestone_wall.json b/src/main/generated/data/minecraft/item/mossy_cobblestone_wall.json index 36c6e1af..1b648aac 100644 --- a/src/main/generated/data/minecraft/item/mossy_cobblestone_wall.json +++ b/src/main/generated/data/minecraft/item/mossy_cobblestone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_cobblestone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_cobblestone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_cobblestone_wall", + "translation_key": "block.minecraft.mossy_cobblestone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_stone_brick_slab.json b/src/main/generated/data/minecraft/item/mossy_stone_brick_slab.json index e86b8939..159d16e9 100644 --- a/src/main/generated/data/minecraft/item/mossy_stone_brick_slab.json +++ b/src/main/generated/data/minecraft/item/mossy_stone_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_stone_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_stone_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_stone_brick_slab", + "translation_key": "block.minecraft.mossy_stone_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_stone_brick_stairs.json b/src/main/generated/data/minecraft/item/mossy_stone_brick_stairs.json index 540f076c..0965be3f 100644 --- a/src/main/generated/data/minecraft/item/mossy_stone_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/mossy_stone_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_stone_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_stone_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_stone_brick_stairs", + "translation_key": "block.minecraft.mossy_stone_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_stone_brick_wall.json b/src/main/generated/data/minecraft/item/mossy_stone_brick_wall.json index b8baef54..8d1f12bd 100644 --- a/src/main/generated/data/minecraft/item/mossy_stone_brick_wall.json +++ b/src/main/generated/data/minecraft/item/mossy_stone_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_stone_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_stone_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_stone_brick_wall", + "translation_key": "block.minecraft.mossy_stone_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mossy_stone_bricks.json b/src/main/generated/data/minecraft/item/mossy_stone_bricks.json index 78aaecd5..df4c855b 100644 --- a/src/main/generated/data/minecraft/item/mossy_stone_bricks.json +++ b/src/main/generated/data/minecraft/item/mossy_stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mossy_stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mossy_stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mossy_stone_bricks", + "translation_key": "block.minecraft.mossy_stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json b/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json index 7a78605d..a9442d05 100644 --- a/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/mourner_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.mourner_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:mourner" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mourner_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.mourner_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mud.json b/src/main/generated/data/minecraft/item/mud.json index f7669761..c3eaa782 100644 --- a/src/main/generated/data/minecraft/item/mud.json +++ b/src/main/generated/data/minecraft/item/mud.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mud" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mud" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mud", + "translation_key": "block.minecraft.mud" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mud_brick_slab.json b/src/main/generated/data/minecraft/item/mud_brick_slab.json index db487f52..94a5bb63 100644 --- a/src/main/generated/data/minecraft/item/mud_brick_slab.json +++ b/src/main/generated/data/minecraft/item/mud_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mud_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mud_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mud_brick_slab", + "translation_key": "block.minecraft.mud_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mud_brick_stairs.json b/src/main/generated/data/minecraft/item/mud_brick_stairs.json index 2a2714f1..279a714c 100644 --- a/src/main/generated/data/minecraft/item/mud_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/mud_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mud_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mud_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mud_brick_stairs", + "translation_key": "block.minecraft.mud_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mud_brick_wall.json b/src/main/generated/data/minecraft/item/mud_brick_wall.json index 7de205b2..4b9c2b8a 100644 --- a/src/main/generated/data/minecraft/item/mud_brick_wall.json +++ b/src/main/generated/data/minecraft/item/mud_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mud_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mud_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mud_brick_wall", + "translation_key": "block.minecraft.mud_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mud_bricks.json b/src/main/generated/data/minecraft/item/mud_bricks.json index 334b3e5b..3064401e 100644 --- a/src/main/generated/data/minecraft/item/mud_bricks.json +++ b/src/main/generated/data/minecraft/item/mud_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mud_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mud_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mud_bricks", + "translation_key": "block.minecraft.mud_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/muddy_mangrove_roots.json b/src/main/generated/data/minecraft/item/muddy_mangrove_roots.json index e98c2a46..06f45d83 100644 --- a/src/main/generated/data/minecraft/item/muddy_mangrove_roots.json +++ b/src/main/generated/data/minecraft/item/muddy_mangrove_roots.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.muddy_mangrove_roots" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:muddy_mangrove_roots" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:muddy_mangrove_roots", + "translation_key": "block.minecraft.muddy_mangrove_roots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mule_spawn_egg.json b/src/main/generated/data/minecraft/item/mule_spawn_egg.json index dcbbe93d..b2aad31f 100644 --- a/src/main/generated/data/minecraft/item/mule_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/mule_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mule_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:mule_spawn_egg", + "translation_key": "item.minecraft.mule_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mushroom_stem.json b/src/main/generated/data/minecraft/item/mushroom_stem.json index 0c5ce3a6..918e2798 100644 --- a/src/main/generated/data/minecraft/item/mushroom_stem.json +++ b/src/main/generated/data/minecraft/item/mushroom_stem.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.mushroom_stem" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mushroom_stem" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mushroom_stem", + "translation_key": "block.minecraft.mushroom_stem" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mushroom_stew.json b/src/main/generated/data/minecraft/item/mushroom_stew.json index ccdff293..9c13bfe9 100644 --- a/src/main/generated/data/minecraft/item/mushroom_stew.json +++ b/src/main/generated/data/minecraft/item/mushroom_stew.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mushroom_stew" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 6, @@ -20,5 +17,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:mushroom_stew", + "translation_key": "item.minecraft.mushroom_stew" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_11.json b/src/main/generated/data/minecraft/item/music_disc_11.json index 67c68fd2..f29dd071 100644 --- a/src/main/generated/data/minecraft/item/music_disc_11.json +++ b/src/main/generated/data/minecraft/item/music_disc_11.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_11" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:11", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_11", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_11" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_13.json b/src/main/generated/data/minecraft/item/music_disc_13.json index c6bed401..08544c5e 100644 --- a/src/main/generated/data/minecraft/item/music_disc_13.json +++ b/src/main/generated/data/minecraft/item/music_disc_13.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_13" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:13", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_13", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_13" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_5.json b/src/main/generated/data/minecraft/item/music_disc_5.json index 0ba65747..94f22ebe 100644 --- a/src/main/generated/data/minecraft/item/music_disc_5.json +++ b/src/main/generated/data/minecraft/item/music_disc_5.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_5" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:5", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_5", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_5" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_blocks.json b/src/main/generated/data/minecraft/item/music_disc_blocks.json index 84d5cb90..a38f5fa6 100644 --- a/src/main/generated/data/minecraft/item/music_disc_blocks.json +++ b/src/main/generated/data/minecraft/item/music_disc_blocks.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_blocks" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:blocks", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_blocks", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_blocks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_cat.json b/src/main/generated/data/minecraft/item/music_disc_cat.json index 8a4b0100..4c691b27 100644 --- a/src/main/generated/data/minecraft/item/music_disc_cat.json +++ b/src/main/generated/data/minecraft/item/music_disc_cat.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_cat" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:cat", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_cat", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_cat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_chirp.json b/src/main/generated/data/minecraft/item/music_disc_chirp.json index b0127eb3..cf8ff6cc 100644 --- a/src/main/generated/data/minecraft/item/music_disc_chirp.json +++ b/src/main/generated/data/minecraft/item/music_disc_chirp.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_chirp" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:chirp", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_chirp", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_chirp" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_creator.json b/src/main/generated/data/minecraft/item/music_disc_creator.json index be926b67..efb41f61 100644 --- a/src/main/generated/data/minecraft/item/music_disc_creator.json +++ b/src/main/generated/data/minecraft/item/music_disc_creator.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.music_disc_creator" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:creator", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_creator", + "rarity": "rare", + "translation_key": "item.minecraft.music_disc_creator" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json b/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json index bb9be240..814ab015 100644 --- a/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json +++ b/src/main/generated/data/minecraft/item/music_disc_creator_music_box.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_creator_music_box" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:creator_music_box", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_creator_music_box", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_creator_music_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_far.json b/src/main/generated/data/minecraft/item/music_disc_far.json index b5166159..c0d96e52 100644 --- a/src/main/generated/data/minecraft/item/music_disc_far.json +++ b/src/main/generated/data/minecraft/item/music_disc_far.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_far" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:far", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_far", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_far" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_mall.json b/src/main/generated/data/minecraft/item/music_disc_mall.json index 77f42188..e1553f97 100644 --- a/src/main/generated/data/minecraft/item/music_disc_mall.json +++ b/src/main/generated/data/minecraft/item/music_disc_mall.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_mall" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:mall", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_mall", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_mall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_mellohi.json b/src/main/generated/data/minecraft/item/music_disc_mellohi.json index 4f3b3d7a..1ede62e6 100644 --- a/src/main/generated/data/minecraft/item/music_disc_mellohi.json +++ b/src/main/generated/data/minecraft/item/music_disc_mellohi.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_mellohi" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:mellohi", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_mellohi", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_mellohi" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_otherside.json b/src/main/generated/data/minecraft/item/music_disc_otherside.json index 1b3f9758..8c68d601 100644 --- a/src/main/generated/data/minecraft/item/music_disc_otherside.json +++ b/src/main/generated/data/minecraft/item/music_disc_otherside.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.music_disc_otherside" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:otherside", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_otherside", + "rarity": "rare", + "translation_key": "item.minecraft.music_disc_otherside" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_pigstep.json b/src/main/generated/data/minecraft/item/music_disc_pigstep.json index 9da7f58b..06ef15e1 100644 --- a/src/main/generated/data/minecraft/item/music_disc_pigstep.json +++ b/src/main/generated/data/minecraft/item/music_disc_pigstep.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.music_disc_pigstep" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:pigstep", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_pigstep", + "rarity": "rare", + "translation_key": "item.minecraft.music_disc_pigstep" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_precipice.json b/src/main/generated/data/minecraft/item/music_disc_precipice.json index 0ad5ec24..7d1e3f60 100644 --- a/src/main/generated/data/minecraft/item/music_disc_precipice.json +++ b/src/main/generated/data/minecraft/item/music_disc_precipice.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_precipice" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:precipice", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_precipice", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_precipice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_relic.json b/src/main/generated/data/minecraft/item/music_disc_relic.json index b365b3f1..4f46f9bb 100644 --- a/src/main/generated/data/minecraft/item/music_disc_relic.json +++ b/src/main/generated/data/minecraft/item/music_disc_relic.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_relic" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:relic", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_relic", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_relic" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_stal.json b/src/main/generated/data/minecraft/item/music_disc_stal.json index 013d9800..e0279316 100644 --- a/src/main/generated/data/minecraft/item/music_disc_stal.json +++ b/src/main/generated/data/minecraft/item/music_disc_stal.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_stal" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:stal", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_stal", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_stal" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_strad.json b/src/main/generated/data/minecraft/item/music_disc_strad.json index edd2b3df..2a3fe62f 100644 --- a/src/main/generated/data/minecraft/item/music_disc_strad.json +++ b/src/main/generated/data/minecraft/item/music_disc_strad.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_strad" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:strad", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_strad", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_strad" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_wait.json b/src/main/generated/data/minecraft/item/music_disc_wait.json index 892d8f73..7eb4ae5b 100644 --- a/src/main/generated/data/minecraft/item/music_disc_wait.json +++ b/src/main/generated/data/minecraft/item/music_disc_wait.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_wait" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:wait", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_wait", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_wait" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/music_disc_ward.json b/src/main/generated/data/minecraft/item/music_disc_ward.json index 97748c3d..4a3efd45 100644 --- a/src/main/generated/data/minecraft/item/music_disc_ward.json +++ b/src/main/generated/data/minecraft/item/music_disc_ward.json @@ -1,10 +1,11 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.music_disc_ward" - }, - "components": { + "behavior": { "minecraft:playable_song": "minecraft:ward", "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:music_disc_ward", + "rarity": "uncommon", + "translation_key": "item.minecraft.music_disc_ward" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mutton.json b/src/main/generated/data/minecraft/item/mutton.json index 4c0c34a8..e3d4999c 100644 --- a/src/main/generated/data/minecraft/item/mutton.json +++ b/src/main/generated/data/minecraft/item/mutton.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.mutton" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:mutton", + "translation_key": "item.minecraft.mutton" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/mycelium.json b/src/main/generated/data/minecraft/item/mycelium.json index d7fad4cf..486fb985 100644 --- a/src/main/generated/data/minecraft/item/mycelium.json +++ b/src/main/generated/data/minecraft/item/mycelium.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.mycelium" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:mycelium" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:mycelium", + "translation_key": "block.minecraft.mycelium" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/name_tag.json b/src/main/generated/data/minecraft/item/name_tag.json index 209fdbec..258e442b 100644 --- a/src/main/generated/data/minecraft/item/name_tag.json +++ b/src/main/generated/data/minecraft/item/name_tag.json @@ -1,10 +1,11 @@ { - "base": { - "translation_key": "item.minecraft.name_tag" - }, - "components": { + "behavior": { "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:name_tag", + "translation_key": "item.minecraft.name_tag" + }, "events": { "minecraft:use_on_entity": { "action": { diff --git a/src/main/generated/data/minecraft/item/nautilus_shell.json b/src/main/generated/data/minecraft/item/nautilus_shell.json index cdac2d15..e69d9868 100644 --- a/src/main/generated/data/minecraft/item/nautilus_shell.json +++ b/src/main/generated/data/minecraft/item/nautilus_shell.json @@ -1,9 +1,10 @@ { - "base": { + "behavior": { + "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nautilus_shell", "rarity": "uncommon", "translation_key": "item.minecraft.nautilus_shell" - }, - "components": { - "minecraft:stackable": 64 } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_brick.json b/src/main/generated/data/minecraft/item/nether_brick.json index acd0fe0d..6a600039 100644 --- a/src/main/generated/data/minecraft/item/nether_brick.json +++ b/src/main/generated/data/minecraft/item/nether_brick.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.nether_brick" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_brick", + "translation_key": "item.minecraft.nether_brick" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_brick_fence.json b/src/main/generated/data/minecraft/item/nether_brick_fence.json index 823194f7..e609d108 100644 --- a/src/main/generated/data/minecraft/item/nether_brick_fence.json +++ b/src/main/generated/data/minecraft/item/nether_brick_fence.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_brick_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_brick_fence" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_brick_fence", + "translation_key": "block.minecraft.nether_brick_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_brick_slab.json b/src/main/generated/data/minecraft/item/nether_brick_slab.json index 525d67f1..6e0d3c42 100644 --- a/src/main/generated/data/minecraft/item/nether_brick_slab.json +++ b/src/main/generated/data/minecraft/item/nether_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_brick_slab", + "translation_key": "block.minecraft.nether_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_brick_stairs.json b/src/main/generated/data/minecraft/item/nether_brick_stairs.json index 346003d8..5c8b2545 100644 --- a/src/main/generated/data/minecraft/item/nether_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/nether_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_brick_stairs", + "translation_key": "block.minecraft.nether_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_brick_wall.json b/src/main/generated/data/minecraft/item/nether_brick_wall.json index 92877164..89af03f7 100644 --- a/src/main/generated/data/minecraft/item/nether_brick_wall.json +++ b/src/main/generated/data/minecraft/item/nether_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_brick_wall", + "translation_key": "block.minecraft.nether_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_bricks.json b/src/main/generated/data/minecraft/item/nether_bricks.json index 858d9f0b..837b4b6d 100644 --- a/src/main/generated/data/minecraft/item/nether_bricks.json +++ b/src/main/generated/data/minecraft/item/nether_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_bricks", + "translation_key": "block.minecraft.nether_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_gold_ore.json b/src/main/generated/data/minecraft/item/nether_gold_ore.json index a813b2c6..a76a0c25 100644 --- a/src/main/generated/data/minecraft/item/nether_gold_ore.json +++ b/src/main/generated/data/minecraft/item/nether_gold_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_gold_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_gold_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_gold_ore", + "translation_key": "block.minecraft.nether_gold_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_quartz_ore.json b/src/main/generated/data/minecraft/item/nether_quartz_ore.json index 2b16630d..8eb7a918 100644 --- a/src/main/generated/data/minecraft/item/nether_quartz_ore.json +++ b/src/main/generated/data/minecraft/item/nether_quartz_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.nether_quartz_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_quartz_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_quartz_ore", + "translation_key": "block.minecraft.nether_quartz_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_sprouts.json b/src/main/generated/data/minecraft/item/nether_sprouts.json index 9fb049a5..210aa67f 100644 --- a/src/main/generated/data/minecraft/item/nether_sprouts.json +++ b/src/main/generated/data/minecraft/item/nether_sprouts.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.nether_sprouts" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_sprouts" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_sprouts", + "translation_key": "block.minecraft.nether_sprouts" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_star.json b/src/main/generated/data/minecraft/item/nether_star.json index 7d39bd48..b769eeed 100644 --- a/src/main/generated/data/minecraft/item/nether_star.json +++ b/src/main/generated/data/minecraft/item/nether_star.json @@ -1,13 +1,14 @@ { - "base": { - "glint": true, - "rarity": "rare", - "translation_key": "item.minecraft.nether_star" - }, - "components": { + "behavior": { "minecraft:immune_to_damage": { "damage": "minecraft:is_explosion" }, "minecraft:stackable": 64 + }, + "display": { + "glint": true, + "model": "minecraft:nether_star", + "rarity": "rare", + "translation_key": "item.minecraft.nether_star" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_wart.json b/src/main/generated/data/minecraft/item/nether_wart.json index 50907231..d52395c7 100644 --- a/src/main/generated/data/minecraft/item/nether_wart.json +++ b/src/main/generated/data/minecraft/item/nether_wart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.nether_wart" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_wart" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_wart", + "translation_key": "item.minecraft.nether_wart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/nether_wart_block.json b/src/main/generated/data/minecraft/item/nether_wart_block.json index 95e5ac3e..e1eb6e90 100644 --- a/src/main/generated/data/minecraft/item/nether_wart_block.json +++ b/src/main/generated/data/minecraft/item/nether_wart_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.nether_wart_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:nether_wart_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:nether_wart_block", + "translation_key": "block.minecraft.nether_wart_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_axe.json b/src/main/generated/data/minecraft/item/netherite_axe.json index ffa32e1e..61ac2508 100644 --- a/src/main/generated/data/minecraft/item/netherite_axe.json +++ b/src/main/generated/data/minecraft/item/netherite_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.netherite_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 2031 }, @@ -37,5 +34,9 @@ "attack_speed": 0.25, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:netherite_axe", + "translation_key": "item.minecraft.netherite_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_block.json b/src/main/generated/data/minecraft/item/netherite_block.json index a10295d4..91b822f7 100644 --- a/src/main/generated/data/minecraft/item/netherite_block.json +++ b/src/main/generated/data/minecraft/item/netherite_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.netherite_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:netherite_block" }, @@ -10,5 +7,9 @@ "damage": "minecraft:is_fire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:netherite_block", + "translation_key": "block.minecraft.netherite_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_boots.json b/src/main/generated/data/minecraft/item/netherite_boots.json index 5aca3ea6..e176cc6a 100644 --- a/src/main/generated/data/minecraft/item/netherite_boots.json +++ b/src/main/generated/data/minecraft/item/netherite_boots.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.netherite_boots" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:netherite" + "attribute_id": "minecraft:armor.boots", + "defense": 3, + "knockback_resistance": 0.10000000149011612, + "toughness": 3.0 }, "minecraft:damageable": { "durability": 481 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", + "model": "minecraft:netherite", "slot": "feet", "swappable": true }, @@ -27,5 +28,9 @@ "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:netherite_boots", + "translation_key": "item.minecraft.netherite_boots" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_chestplate.json b/src/main/generated/data/minecraft/item/netherite_chestplate.json index 1f570d37..7da8c3ad 100644 --- a/src/main/generated/data/minecraft/item/netherite_chestplate.json +++ b/src/main/generated/data/minecraft/item/netherite_chestplate.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.netherite_chestplate" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:netherite" + "attribute_id": "minecraft:armor.chestplate", + "defense": 8, + "knockback_resistance": 0.10000000149011612, + "toughness": 3.0 }, "minecraft:damageable": { "durability": 592 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", + "model": "minecraft:netherite", "slot": "chest", "swappable": true }, @@ -27,5 +28,9 @@ "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:netherite_chestplate", + "translation_key": "item.minecraft.netherite_chestplate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_helmet.json b/src/main/generated/data/minecraft/item/netherite_helmet.json index 41e890ff..bb461f2b 100644 --- a/src/main/generated/data/minecraft/item/netherite_helmet.json +++ b/src/main/generated/data/minecraft/item/netherite_helmet.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.netherite_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:netherite" + "attribute_id": "minecraft:armor.helmet", + "defense": 3, + "knockback_resistance": 0.10000000149011612, + "toughness": 3.0 }, "minecraft:damageable": { "durability": 407 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", + "model": "minecraft:netherite", "slot": "head", "swappable": true }, @@ -27,5 +28,9 @@ "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:netherite_helmet", + "translation_key": "item.minecraft.netherite_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_hoe.json b/src/main/generated/data/minecraft/item/netherite_hoe.json index c4446103..3c53188a 100644 --- a/src/main/generated/data/minecraft/item/netherite_hoe.json +++ b/src/main/generated/data/minecraft/item/netherite_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.netherite_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 2031 }, @@ -38,6 +35,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:netherite_hoe", + "translation_key": "item.minecraft.netherite_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/netherite_ingot.json b/src/main/generated/data/minecraft/item/netherite_ingot.json index a5de2c1e..23cb38ff 100644 --- a/src/main/generated/data/minecraft/item/netherite_ingot.json +++ b/src/main/generated/data/minecraft/item/netherite_ingot.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.netherite_ingot" - }, - "components": { + "behavior": { "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:netherite_ingot", + "translation_key": "item.minecraft.netherite_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_leggings.json b/src/main/generated/data/minecraft/item/netherite_leggings.json index 3b1e7cac..7df30825 100644 --- a/src/main/generated/data/minecraft/item/netherite_leggings.json +++ b/src/main/generated/data/minecraft/item/netherite_leggings.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.netherite_leggings" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:netherite" + "attribute_id": "minecraft:armor.leggings", + "defense": 6, + "knockback_resistance": 0.10000000149011612, + "toughness": 3.0 }, "minecraft:damageable": { "durability": 555 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", + "model": "minecraft:netherite", "slot": "legs", "swappable": true }, @@ -27,5 +28,9 @@ "items": "#minecraft:repairs_netherite_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:netherite_leggings", + "translation_key": "item.minecraft.netherite_leggings" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_pickaxe.json b/src/main/generated/data/minecraft/item/netherite_pickaxe.json index 1341bd76..648220e6 100644 --- a/src/main/generated/data/minecraft/item/netherite_pickaxe.json +++ b/src/main/generated/data/minecraft/item/netherite_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.netherite_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 2031 }, @@ -37,5 +34,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:netherite_pickaxe", + "translation_key": "item.minecraft.netherite_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_scrap.json b/src/main/generated/data/minecraft/item/netherite_scrap.json index 372c6dfe..79d39f27 100644 --- a/src/main/generated/data/minecraft/item/netherite_scrap.json +++ b/src/main/generated/data/minecraft/item/netherite_scrap.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.netherite_scrap" - }, - "components": { + "behavior": { "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:netherite_scrap", + "translation_key": "item.minecraft.netherite_scrap" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_shovel.json b/src/main/generated/data/minecraft/item/netherite_shovel.json index 63616413..bff386d9 100644 --- a/src/main/generated/data/minecraft/item/netherite_shovel.json +++ b/src/main/generated/data/minecraft/item/netherite_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.netherite_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 2031 }, @@ -38,6 +35,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:netherite_shovel", + "translation_key": "item.minecraft.netherite_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/netherite_sword.json b/src/main/generated/data/minecraft/item/netherite_sword.json index ca342db7..3f59ccda 100644 --- a/src/main/generated/data/minecraft/item/netherite_sword.json +++ b/src/main/generated/data/minecraft/item/netherite_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.netherite_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 2031 }, @@ -37,5 +34,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:netherite_sword", + "translation_key": "item.minecraft.netherite_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json b/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json index 9bf4f23a..ac2874c4 100644 --- a/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json +++ b/src/main/generated/data/minecraft/item/netherite_upgrade_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.netherite_upgrade_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:netherite_upgrade" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:netherite_upgrade_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.netherite_upgrade_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/netherrack.json b/src/main/generated/data/minecraft/item/netherrack.json index bb00b4fb..b51ca294 100644 --- a/src/main/generated/data/minecraft/item/netherrack.json +++ b/src/main/generated/data/minecraft/item/netherrack.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.netherrack" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:netherrack" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:netherrack", + "translation_key": "block.minecraft.netherrack" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/note_block.json b/src/main/generated/data/minecraft/item/note_block.json index f953e169..d55b813e 100644 --- a/src/main/generated/data/minecraft/item/note_block.json +++ b/src/main/generated/data/minecraft/item/note_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.note_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:note_block" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:note_block", + "translation_key": "block.minecraft.note_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_boat.json b/src/main/generated/data/minecraft/item/oak_boat.json index 81a07fa3..65997f2a 100644 --- a/src/main/generated/data/minecraft/item/oak_boat.json +++ b/src/main/generated/data/minecraft/item/oak_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.oak_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:oak_boat", + "translation_key": "item.minecraft.oak_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_button.json b/src/main/generated/data/minecraft/item/oak_button.json index 0fe2111d..fa6df9f5 100644 --- a/src/main/generated/data/minecraft/item/oak_button.json +++ b/src/main/generated/data/minecraft/item/oak_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_button", + "translation_key": "block.minecraft.oak_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_chest_boat.json b/src/main/generated/data/minecraft/item/oak_chest_boat.json index 2fcec54b..00e41605 100644 --- a/src/main/generated/data/minecraft/item/oak_chest_boat.json +++ b/src/main/generated/data/minecraft/item/oak_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.oak_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:oak_chest_boat", + "translation_key": "item.minecraft.oak_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_door.json b/src/main/generated/data/minecraft/item/oak_door.json index 1720700a..7879dfae 100644 --- a/src/main/generated/data/minecraft/item/oak_door.json +++ b/src/main/generated/data/minecraft/item/oak_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_door", + "translation_key": "block.minecraft.oak_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_fence.json b/src/main/generated/data/minecraft/item/oak_fence.json index 9f3c48ef..14e9abb0 100644 --- a/src/main/generated/data/minecraft/item/oak_fence.json +++ b/src/main/generated/data/minecraft/item/oak_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_fence", + "translation_key": "block.minecraft.oak_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_fence_gate.json b/src/main/generated/data/minecraft/item/oak_fence_gate.json index 39611997..95c29c41 100644 --- a/src/main/generated/data/minecraft/item/oak_fence_gate.json +++ b/src/main/generated/data/minecraft/item/oak_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_fence_gate", + "translation_key": "block.minecraft.oak_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_hanging_sign.json b/src/main/generated/data/minecraft/item/oak_hanging_sign.json index dfbf8885..4c3d1de7 100644 --- a/src/main/generated/data/minecraft/item/oak_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/oak_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:oak_hanging_sign", + "translation_key": "block.minecraft.oak_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_leaves.json b/src/main/generated/data/minecraft/item/oak_leaves.json index 546576ea..82abb7de 100644 --- a/src/main/generated/data/minecraft/item/oak_leaves.json +++ b/src/main/generated/data/minecraft/item/oak_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_leaves" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:oak_leaves", + "translation_key": "block.minecraft.oak_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_log.json b/src/main/generated/data/minecraft/item/oak_log.json index c9697e8c..78e8d9ba 100644 --- a/src/main/generated/data/minecraft/item/oak_log.json +++ b/src/main/generated/data/minecraft/item/oak_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_log", + "translation_key": "block.minecraft.oak_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_planks.json b/src/main/generated/data/minecraft/item/oak_planks.json index 7df8ab0b..a6fbf953 100644 --- a/src/main/generated/data/minecraft/item/oak_planks.json +++ b/src/main/generated/data/minecraft/item/oak_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_planks", + "translation_key": "block.minecraft.oak_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_pressure_plate.json b/src/main/generated/data/minecraft/item/oak_pressure_plate.json index 0977cd46..5e0f5a5e 100644 --- a/src/main/generated/data/minecraft/item/oak_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/oak_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_pressure_plate", + "translation_key": "block.minecraft.oak_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_sapling.json b/src/main/generated/data/minecraft/item/oak_sapling.json index 02b6ab26..d08966fa 100644 --- a/src/main/generated/data/minecraft/item/oak_sapling.json +++ b/src/main/generated/data/minecraft/item/oak_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:oak_sapling", + "translation_key": "block.minecraft.oak_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/oak_sign.json b/src/main/generated/data/minecraft/item/oak_sign.json index 47d5185b..4b905c52 100644 --- a/src/main/generated/data/minecraft/item/oak_sign.json +++ b/src/main/generated/data/minecraft/item/oak_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:oak_sign", + "translation_key": "block.minecraft.oak_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_slab.json b/src/main/generated/data/minecraft/item/oak_slab.json index 03a26220..67f8add8 100644 --- a/src/main/generated/data/minecraft/item/oak_slab.json +++ b/src/main/generated/data/minecraft/item/oak_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_slab", + "translation_key": "block.minecraft.oak_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_stairs.json b/src/main/generated/data/minecraft/item/oak_stairs.json index d0cde11a..ab12c654 100644 --- a/src/main/generated/data/minecraft/item/oak_stairs.json +++ b/src/main/generated/data/minecraft/item/oak_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_stairs", + "translation_key": "block.minecraft.oak_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_trapdoor.json b/src/main/generated/data/minecraft/item/oak_trapdoor.json index dbf4df94..7f81f3b9 100644 --- a/src/main/generated/data/minecraft/item/oak_trapdoor.json +++ b/src/main/generated/data/minecraft/item/oak_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_trapdoor", + "translation_key": "block.minecraft.oak_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oak_wood.json b/src/main/generated/data/minecraft/item/oak_wood.json index 1f5f1059..041b6478 100644 --- a/src/main/generated/data/minecraft/item/oak_wood.json +++ b/src/main/generated/data/minecraft/item/oak_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oak_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oak_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oak_wood", + "translation_key": "block.minecraft.oak_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/observer.json b/src/main/generated/data/minecraft/item/observer.json index ae353cad..95cd3d4b 100644 --- a/src/main/generated/data/minecraft/item/observer.json +++ b/src/main/generated/data/minecraft/item/observer.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.observer" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:observer" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:observer", + "translation_key": "block.minecraft.observer" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/obsidian.json b/src/main/generated/data/minecraft/item/obsidian.json index e4e64a24..c71e05ac 100644 --- a/src/main/generated/data/minecraft/item/obsidian.json +++ b/src/main/generated/data/minecraft/item/obsidian.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.obsidian" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:obsidian" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:obsidian", + "translation_key": "block.minecraft.obsidian" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json b/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json index fb9629a0..b1557812 100644 --- a/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ocelot_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ocelot_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:ocelot_spawn_egg", + "translation_key": "item.minecraft.ocelot_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ochre_froglight.json b/src/main/generated/data/minecraft/item/ochre_froglight.json index 434bc8a8..f5988d00 100644 --- a/src/main/generated/data/minecraft/item/ochre_froglight.json +++ b/src/main/generated/data/minecraft/item/ochre_froglight.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.ochre_froglight" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:ochre_froglight" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ochre_froglight", + "translation_key": "block.minecraft.ochre_froglight" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ominous_bottle.json b/src/main/generated/data/minecraft/item/ominous_bottle.json index 1ef5c453..461ddde7 100644 --- a/src/main/generated/data/minecraft/item/ominous_bottle.json +++ b/src/main/generated/data/minecraft/item/ominous_bottle.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.ominous_bottle" - }, - "components": { + "behavior": { "minecraft:consumable": { "has_consume_particles": false, "sound": "minecraft:entity.generic.drink" @@ -18,6 +14,11 @@ } } }, + "display": { + "model": "minecraft:ominous_bottle", + "rarity": "uncommon", + "translation_key": "item.minecraft.ominous_bottle" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/ominous_trial_key.json b/src/main/generated/data/minecraft/item/ominous_trial_key.json index 4cd52f5f..443cbded 100644 --- a/src/main/generated/data/minecraft/item/ominous_trial_key.json +++ b/src/main/generated/data/minecraft/item/ominous_trial_key.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.ominous_trial_key" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ominous_trial_key", + "translation_key": "item.minecraft.ominous_trial_key" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_banner.json b/src/main/generated/data/minecraft/item/orange_banner.json index f3b1e276..2e096107 100644 --- a/src/main/generated/data/minecraft/item/orange_banner.json +++ b/src/main/generated/data/minecraft/item/orange_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.orange_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "orange" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:orange_banner", + "translation_key": "block.minecraft.orange_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_bed.json b/src/main/generated/data/minecraft/item/orange_bed.json index b6b1d02e..b601aeca 100644 --- a/src/main/generated/data/minecraft/item/orange_bed.json +++ b/src/main/generated/data/minecraft/item/orange_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:orange_bed", + "translation_key": "block.minecraft.orange_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_candle.json b/src/main/generated/data/minecraft/item/orange_candle.json index 85d2dccb..0f8703cb 100644 --- a/src/main/generated/data/minecraft/item/orange_candle.json +++ b/src/main/generated/data/minecraft/item/orange_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_candle", + "translation_key": "block.minecraft.orange_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_carpet.json b/src/main/generated/data/minecraft/item/orange_carpet.json index da23cedc..b12c60f7 100644 --- a/src/main/generated/data/minecraft/item/orange_carpet.json +++ b/src/main/generated/data/minecraft/item/orange_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.orange_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:orange_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_carpet", + "translation_key": "block.minecraft.orange_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_concrete.json b/src/main/generated/data/minecraft/item/orange_concrete.json index 0830e92f..70f3f260 100644 --- a/src/main/generated/data/minecraft/item/orange_concrete.json +++ b/src/main/generated/data/minecraft/item/orange_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_concrete", + "translation_key": "block.minecraft.orange_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_concrete_powder.json b/src/main/generated/data/minecraft/item/orange_concrete_powder.json index c4f5f26d..95d97989 100644 --- a/src/main/generated/data/minecraft/item/orange_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/orange_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_concrete_powder", + "translation_key": "block.minecraft.orange_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_dye.json b/src/main/generated/data/minecraft/item/orange_dye.json index 4f2c9231..23caa53f 100644 --- a/src/main/generated/data/minecraft/item/orange_dye.json +++ b/src/main/generated/data/minecraft/item/orange_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.orange_dye" - }, - "components": { + "behavior": { "minecraft:dye": "orange", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_dye", + "translation_key": "item.minecraft.orange_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_glazed_terracotta.json b/src/main/generated/data/minecraft/item/orange_glazed_terracotta.json index 75235d44..21b5c916 100644 --- a/src/main/generated/data/minecraft/item/orange_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/orange_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_glazed_terracotta", + "translation_key": "block.minecraft.orange_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_shulker_box.json b/src/main/generated/data/minecraft/item/orange_shulker_box.json index ffe0b3ba..55bce3ad 100644 --- a/src/main/generated/data/minecraft/item/orange_shulker_box.json +++ b/src/main/generated/data/minecraft/item/orange_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.orange_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:orange_shulker_box", + "translation_key": "block.minecraft.orange_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_stained_glass.json b/src/main/generated/data/minecraft/item/orange_stained_glass.json index 151cbf93..26ef765e 100644 --- a/src/main/generated/data/minecraft/item/orange_stained_glass.json +++ b/src/main/generated/data/minecraft/item/orange_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_stained_glass", + "translation_key": "block.minecraft.orange_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_stained_glass_pane.json b/src/main/generated/data/minecraft/item/orange_stained_glass_pane.json index 458bb354..32aa95e1 100644 --- a/src/main/generated/data/minecraft/item/orange_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/orange_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_stained_glass_pane", + "translation_key": "block.minecraft.orange_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_terracotta.json b/src/main/generated/data/minecraft/item/orange_terracotta.json index b80cf358..8627390d 100644 --- a/src/main/generated/data/minecraft/item/orange_terracotta.json +++ b/src/main/generated/data/minecraft/item/orange_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.orange_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_terracotta", + "translation_key": "block.minecraft.orange_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_tulip.json b/src/main/generated/data/minecraft/item/orange_tulip.json index 48db11c1..318c2e88 100644 --- a/src/main/generated/data/minecraft/item/orange_tulip.json +++ b/src/main/generated/data/minecraft/item/orange_tulip.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.orange_tulip" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_tulip" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:orange_tulip", + "translation_key": "block.minecraft.orange_tulip" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/orange_wool.json b/src/main/generated/data/minecraft/item/orange_wool.json index 27062b76..a4e4b383 100644 --- a/src/main/generated/data/minecraft/item/orange_wool.json +++ b/src/main/generated/data/minecraft/item/orange_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.orange_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:orange_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:orange_wool", + "translation_key": "block.minecraft.orange_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxeye_daisy.json b/src/main/generated/data/minecraft/item/oxeye_daisy.json index 3feb6a61..aeb46d94 100644 --- a/src/main/generated/data/minecraft/item/oxeye_daisy.json +++ b/src/main/generated/data/minecraft/item/oxeye_daisy.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.oxeye_daisy" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxeye_daisy" }, @@ -18,6 +15,10 @@ ] } }, + "display": { + "model": "minecraft:oxeye_daisy", + "translation_key": "block.minecraft.oxeye_daisy" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/oxidized_chiseled_copper.json b/src/main/generated/data/minecraft/item/oxidized_chiseled_copper.json index 0feff433..7e136c25 100644 --- a/src/main/generated/data/minecraft/item/oxidized_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/oxidized_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_chiseled_copper", + "translation_key": "block.minecraft.oxidized_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_copper.json b/src/main/generated/data/minecraft/item/oxidized_copper.json index bb72f185..1fa71438 100644 --- a/src/main/generated/data/minecraft/item/oxidized_copper.json +++ b/src/main/generated/data/minecraft/item/oxidized_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_copper", + "translation_key": "block.minecraft.oxidized_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_copper_bulb.json b/src/main/generated/data/minecraft/item/oxidized_copper_bulb.json index 97bd3d2f..155a98fd 100644 --- a/src/main/generated/data/minecraft/item/oxidized_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/oxidized_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_copper_bulb", + "translation_key": "block.minecraft.oxidized_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_copper_door.json b/src/main/generated/data/minecraft/item/oxidized_copper_door.json index ab04ba7b..d3a14948 100644 --- a/src/main/generated/data/minecraft/item/oxidized_copper_door.json +++ b/src/main/generated/data/minecraft/item/oxidized_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_copper_door", + "translation_key": "block.minecraft.oxidized_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_copper_grate.json b/src/main/generated/data/minecraft/item/oxidized_copper_grate.json index d37bea17..03443d7c 100644 --- a/src/main/generated/data/minecraft/item/oxidized_copper_grate.json +++ b/src/main/generated/data/minecraft/item/oxidized_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_copper_grate", + "translation_key": "block.minecraft.oxidized_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_copper_trapdoor.json b/src/main/generated/data/minecraft/item/oxidized_copper_trapdoor.json index a9660cf0..57c7e2ab 100644 --- a/src/main/generated/data/minecraft/item/oxidized_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/oxidized_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_copper_trapdoor", + "translation_key": "block.minecraft.oxidized_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_cut_copper.json b/src/main/generated/data/minecraft/item/oxidized_cut_copper.json index aea06e26..74b3b001 100644 --- a/src/main/generated/data/minecraft/item/oxidized_cut_copper.json +++ b/src/main/generated/data/minecraft/item/oxidized_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_cut_copper", + "translation_key": "block.minecraft.oxidized_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_cut_copper_slab.json b/src/main/generated/data/minecraft/item/oxidized_cut_copper_slab.json index a1f14a59..a7d1e1eb 100644 --- a/src/main/generated/data/minecraft/item/oxidized_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/oxidized_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_cut_copper_slab", + "translation_key": "block.minecraft.oxidized_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/oxidized_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/oxidized_cut_copper_stairs.json index d0406aa8..83ea5c1c 100644 --- a/src/main/generated/data/minecraft/item/oxidized_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/oxidized_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.oxidized_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:oxidized_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:oxidized_cut_copper_stairs", + "translation_key": "block.minecraft.oxidized_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/packed_ice.json b/src/main/generated/data/minecraft/item/packed_ice.json index d11977ac..90d8dcbb 100644 --- a/src/main/generated/data/minecraft/item/packed_ice.json +++ b/src/main/generated/data/minecraft/item/packed_ice.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.packed_ice" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:packed_ice" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:packed_ice", + "translation_key": "block.minecraft.packed_ice" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/packed_mud.json b/src/main/generated/data/minecraft/item/packed_mud.json index 79b161a9..166aecdd 100644 --- a/src/main/generated/data/minecraft/item/packed_mud.json +++ b/src/main/generated/data/minecraft/item/packed_mud.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.packed_mud" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:packed_mud" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:packed_mud", + "translation_key": "block.minecraft.packed_mud" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/painting.json b/src/main/generated/data/minecraft/item/painting.json index 4d0cba85..3ea3d81d 100644 --- a/src/main/generated/data/minecraft/item/painting.json +++ b/src/main/generated/data/minecraft/item/painting.json @@ -1,13 +1,14 @@ { - "base": { - "translation_key": "item.minecraft.painting" - }, - "components": { + "behavior": { "minecraft:entity": { "entity": { "type": "minecraft:painting" } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:painting", + "translation_key": "item.minecraft.painting" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/panda_spawn_egg.json b/src/main/generated/data/minecraft/item/panda_spawn_egg.json index 74dd3705..a8eb5b00 100644 --- a/src/main/generated/data/minecraft/item/panda_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/panda_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.panda_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:panda_spawn_egg", + "translation_key": "item.minecraft.panda_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/paper.json b/src/main/generated/data/minecraft/item/paper.json index e1e1f062..bd5bffb9 100644 --- a/src/main/generated/data/minecraft/item/paper.json +++ b/src/main/generated/data/minecraft/item/paper.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.paper" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:paper", + "translation_key": "item.minecraft.paper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/parrot_spawn_egg.json b/src/main/generated/data/minecraft/item/parrot_spawn_egg.json index a0f3aa30..4dd1e7b5 100644 --- a/src/main/generated/data/minecraft/item/parrot_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/parrot_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.parrot_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:parrot_spawn_egg", + "translation_key": "item.minecraft.parrot_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pearlescent_froglight.json b/src/main/generated/data/minecraft/item/pearlescent_froglight.json index 77ed6d52..d1b026f6 100644 --- a/src/main/generated/data/minecraft/item/pearlescent_froglight.json +++ b/src/main/generated/data/minecraft/item/pearlescent_froglight.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pearlescent_froglight" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pearlescent_froglight" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pearlescent_froglight", + "translation_key": "block.minecraft.pearlescent_froglight" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/peony.json b/src/main/generated/data/minecraft/item/peony.json index d76811fb..d03d1b0a 100644 --- a/src/main/generated/data/minecraft/item/peony.json +++ b/src/main/generated/data/minecraft/item/peony.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.peony" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:peony" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:peony", + "translation_key": "block.minecraft.peony" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/petrified_oak_slab.json b/src/main/generated/data/minecraft/item/petrified_oak_slab.json index d64b6e81..84c245e5 100644 --- a/src/main/generated/data/minecraft/item/petrified_oak_slab.json +++ b/src/main/generated/data/minecraft/item/petrified_oak_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.petrified_oak_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:petrified_oak_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:petrified_oak_slab", + "translation_key": "block.minecraft.petrified_oak_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/phantom_membrane.json b/src/main/generated/data/minecraft/item/phantom_membrane.json index e6120c80..31aeaa93 100644 --- a/src/main/generated/data/minecraft/item/phantom_membrane.json +++ b/src/main/generated/data/minecraft/item/phantom_membrane.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.phantom_membrane" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:phantom_membrane", + "translation_key": "item.minecraft.phantom_membrane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/phantom_spawn_egg.json b/src/main/generated/data/minecraft/item/phantom_spawn_egg.json index e6494186..0374d441 100644 --- a/src/main/generated/data/minecraft/item/phantom_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/phantom_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.phantom_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:phantom_spawn_egg", + "translation_key": "item.minecraft.phantom_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pig_spawn_egg.json b/src/main/generated/data/minecraft/item/pig_spawn_egg.json index 960b126d..29f68905 100644 --- a/src/main/generated/data/minecraft/item/pig_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pig_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pig_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:pig_spawn_egg", + "translation_key": "item.minecraft.pig_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_banner_pattern.json b/src/main/generated/data/minecraft/item/piglin_banner_pattern.json index 79e03037..65274f54 100644 --- a/src/main/generated/data/minecraft/item/piglin_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/piglin_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.piglin_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/piglin" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:piglin_banner_pattern", + "rarity": "uncommon", + "translation_key": "item.minecraft.piglin_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json b/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json index c7ff6c73..2464c674 100644 --- a/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/piglin_brute_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.piglin_brute_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:piglin_brute_spawn_egg", + "translation_key": "item.minecraft.piglin_brute_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_head.json b/src/main/generated/data/minecraft/item/piglin_head.json index 106fdbe1..78c8725f 100644 --- a/src/main/generated/data/minecraft/item/piglin_head.json +++ b/src/main/generated/data/minecraft/item/piglin_head.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.piglin_head" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:piglin_head", + "rarity": "uncommon", + "translation_key": "block.minecraft.piglin_head" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piglin_spawn_egg.json b/src/main/generated/data/minecraft/item/piglin_spawn_egg.json index f74a1f76..6bff66ea 100644 --- a/src/main/generated/data/minecraft/item/piglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/piglin_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.piglin_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:piglin_spawn_egg", + "translation_key": "item.minecraft.piglin_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pillager_spawn_egg.json b/src/main/generated/data/minecraft/item/pillager_spawn_egg.json index 73d0a224..1a2fa339 100644 --- a/src/main/generated/data/minecraft/item/pillager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pillager_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pillager_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:pillager_spawn_egg", + "translation_key": "item.minecraft.pillager_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_banner.json b/src/main/generated/data/minecraft/item/pink_banner.json index 1b5e0d61..d5636356 100644 --- a/src/main/generated/data/minecraft/item/pink_banner.json +++ b/src/main/generated/data/minecraft/item/pink_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "pink" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:pink_banner", + "translation_key": "block.minecraft.pink_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_bed.json b/src/main/generated/data/minecraft/item/pink_bed.json index 046d0a6e..6d58a654 100644 --- a/src/main/generated/data/minecraft/item/pink_bed.json +++ b/src/main/generated/data/minecraft/item/pink_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:pink_bed", + "translation_key": "block.minecraft.pink_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_candle.json b/src/main/generated/data/minecraft/item/pink_candle.json index b01f2a09..ccfebcb7 100644 --- a/src/main/generated/data/minecraft/item/pink_candle.json +++ b/src/main/generated/data/minecraft/item/pink_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_candle", + "translation_key": "block.minecraft.pink_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_carpet.json b/src/main/generated/data/minecraft/item/pink_carpet.json index 6ec3e869..a3319a3a 100644 --- a/src/main/generated/data/minecraft/item/pink_carpet.json +++ b/src/main/generated/data/minecraft/item/pink_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:pink_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_carpet", + "translation_key": "block.minecraft.pink_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_concrete.json b/src/main/generated/data/minecraft/item/pink_concrete.json index 3f440910..c4de0c26 100644 --- a/src/main/generated/data/minecraft/item/pink_concrete.json +++ b/src/main/generated/data/minecraft/item/pink_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_concrete", + "translation_key": "block.minecraft.pink_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_concrete_powder.json b/src/main/generated/data/minecraft/item/pink_concrete_powder.json index 6e034c7f..37dd3546 100644 --- a/src/main/generated/data/minecraft/item/pink_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/pink_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_concrete_powder", + "translation_key": "block.minecraft.pink_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_dye.json b/src/main/generated/data/minecraft/item/pink_dye.json index 2a7d7ad0..8084fcc4 100644 --- a/src/main/generated/data/minecraft/item/pink_dye.json +++ b/src/main/generated/data/minecraft/item/pink_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.pink_dye" - }, - "components": { + "behavior": { "minecraft:dye": "pink", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_dye", + "translation_key": "item.minecraft.pink_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_glazed_terracotta.json b/src/main/generated/data/minecraft/item/pink_glazed_terracotta.json index 6a05826a..8a82e6c9 100644 --- a/src/main/generated/data/minecraft/item/pink_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/pink_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_glazed_terracotta", + "translation_key": "block.minecraft.pink_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_petals.json b/src/main/generated/data/minecraft/item/pink_petals.json index 55f6ee38..cb4647de 100644 --- a/src/main/generated/data/minecraft/item/pink_petals.json +++ b/src/main/generated/data/minecraft/item/pink_petals.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_petals" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_petals" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_petals", + "translation_key": "block.minecraft.pink_petals" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_shulker_box.json b/src/main/generated/data/minecraft/item/pink_shulker_box.json index 309a693b..ae50e559 100644 --- a/src/main/generated/data/minecraft/item/pink_shulker_box.json +++ b/src/main/generated/data/minecraft/item/pink_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:pink_shulker_box", + "translation_key": "block.minecraft.pink_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_stained_glass.json b/src/main/generated/data/minecraft/item/pink_stained_glass.json index 57ac3385..2bdd01b3 100644 --- a/src/main/generated/data/minecraft/item/pink_stained_glass.json +++ b/src/main/generated/data/minecraft/item/pink_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_stained_glass", + "translation_key": "block.minecraft.pink_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_stained_glass_pane.json b/src/main/generated/data/minecraft/item/pink_stained_glass_pane.json index 46844154..7587ed6a 100644 --- a/src/main/generated/data/minecraft/item/pink_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/pink_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_stained_glass_pane", + "translation_key": "block.minecraft.pink_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_terracotta.json b/src/main/generated/data/minecraft/item/pink_terracotta.json index e1235e5b..bf0b9e25 100644 --- a/src/main/generated/data/minecraft/item/pink_terracotta.json +++ b/src/main/generated/data/minecraft/item/pink_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pink_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_terracotta", + "translation_key": "block.minecraft.pink_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_tulip.json b/src/main/generated/data/minecraft/item/pink_tulip.json index 34c96062..0371ecc7 100644 --- a/src/main/generated/data/minecraft/item/pink_tulip.json +++ b/src/main/generated/data/minecraft/item/pink_tulip.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_tulip" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_tulip" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:pink_tulip", + "translation_key": "block.minecraft.pink_tulip" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/pink_wool.json b/src/main/generated/data/minecraft/item/pink_wool.json index 96af2723..cc12a3cc 100644 --- a/src/main/generated/data/minecraft/item/pink_wool.json +++ b/src/main/generated/data/minecraft/item/pink_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pink_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pink_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pink_wool", + "translation_key": "block.minecraft.pink_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/piston.json b/src/main/generated/data/minecraft/item/piston.json index 65fdb047..cf93f711 100644 --- a/src/main/generated/data/minecraft/item/piston.json +++ b/src/main/generated/data/minecraft/item/piston.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.piston" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:piston" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:piston", + "translation_key": "block.minecraft.piston" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pitcher_plant.json b/src/main/generated/data/minecraft/item/pitcher_plant.json index d022dc13..5041f263 100644 --- a/src/main/generated/data/minecraft/item/pitcher_plant.json +++ b/src/main/generated/data/minecraft/item/pitcher_plant.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pitcher_plant" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pitcher_plant" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pitcher_plant", + "translation_key": "block.minecraft.pitcher_plant" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pitcher_pod.json b/src/main/generated/data/minecraft/item/pitcher_pod.json index f6bcdc3a..e5d81fa8 100644 --- a/src/main/generated/data/minecraft/item/pitcher_pod.json +++ b/src/main/generated/data/minecraft/item/pitcher_pod.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pitcher_pod" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pitcher_crop" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pitcher_pod", + "translation_key": "item.minecraft.pitcher_pod" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/player_head.json b/src/main/generated/data/minecraft/item/player_head.json index ac47f521..39e354ff 100644 --- a/src/main/generated/data/minecraft/item/player_head.json +++ b/src/main/generated/data/minecraft/item/player_head.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.player_head" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:player_head", + "rarity": "uncommon", + "translation_key": "block.minecraft.player_head" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json b/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json index 6a4dd3d5..e9d4e89a 100644 --- a/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/plenty_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.plenty_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:plenty" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:plenty_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.plenty_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/podzol.json b/src/main/generated/data/minecraft/item/podzol.json index 95ab0c46..036d3ca7 100644 --- a/src/main/generated/data/minecraft/item/podzol.json +++ b/src/main/generated/data/minecraft/item/podzol.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.podzol" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:podzol" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:podzol", + "translation_key": "block.minecraft.podzol" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pointed_dripstone.json b/src/main/generated/data/minecraft/item/pointed_dripstone.json index 129220a7..50d554a9 100644 --- a/src/main/generated/data/minecraft/item/pointed_dripstone.json +++ b/src/main/generated/data/minecraft/item/pointed_dripstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.pointed_dripstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pointed_dripstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pointed_dripstone", + "translation_key": "block.minecraft.pointed_dripstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/poisonous_potato.json b/src/main/generated/data/minecraft/item/poisonous_potato.json index 96751e5c..556effc6 100644 --- a/src/main/generated/data/minecraft/item/poisonous_potato.json +++ b/src/main/generated/data/minecraft/item/poisonous_potato.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.poisonous_potato" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:poisonous_potato", + "translation_key": "item.minecraft.poisonous_potato" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json b/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json index 5bbc5110..75a2b370 100644 --- a/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/polar_bear_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.polar_bear_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:polar_bear_spawn_egg", + "translation_key": "item.minecraft.polar_bear_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_andesite.json b/src/main/generated/data/minecraft/item/polished_andesite.json index 30230dcb..2943c89b 100644 --- a/src/main/generated/data/minecraft/item/polished_andesite.json +++ b/src/main/generated/data/minecraft/item/polished_andesite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_andesite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_andesite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_andesite", + "translation_key": "block.minecraft.polished_andesite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_andesite_slab.json b/src/main/generated/data/minecraft/item/polished_andesite_slab.json index d9a66af4..5960bd24 100644 --- a/src/main/generated/data/minecraft/item/polished_andesite_slab.json +++ b/src/main/generated/data/minecraft/item/polished_andesite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_andesite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_andesite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_andesite_slab", + "translation_key": "block.minecraft.polished_andesite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_andesite_stairs.json b/src/main/generated/data/minecraft/item/polished_andesite_stairs.json index 29a288e1..4ad7dbc8 100644 --- a/src/main/generated/data/minecraft/item/polished_andesite_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_andesite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_andesite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_andesite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_andesite_stairs", + "translation_key": "block.minecraft.polished_andesite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_basalt.json b/src/main/generated/data/minecraft/item/polished_basalt.json index b70a4766..2e3d4b0b 100644 --- a/src/main/generated/data/minecraft/item/polished_basalt.json +++ b/src/main/generated/data/minecraft/item/polished_basalt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_basalt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_basalt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_basalt", + "translation_key": "block.minecraft.polished_basalt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone.json b/src/main/generated/data/minecraft/item/polished_blackstone.json index 86fe0815..d252120f 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone", + "translation_key": "block.minecraft.polished_blackstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_brick_slab.json b/src/main/generated/data/minecraft/item/polished_blackstone_brick_slab.json index 8d516ed2..1fdeebc2 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_brick_slab.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_brick_slab", + "translation_key": "block.minecraft.polished_blackstone_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_brick_stairs.json b/src/main/generated/data/minecraft/item/polished_blackstone_brick_stairs.json index 84f9ea92..f82537e9 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_brick_stairs", + "translation_key": "block.minecraft.polished_blackstone_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_brick_wall.json b/src/main/generated/data/minecraft/item/polished_blackstone_brick_wall.json index a3a8b6f1..be967177 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_brick_wall.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_brick_wall", + "translation_key": "block.minecraft.polished_blackstone_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_bricks.json b/src/main/generated/data/minecraft/item/polished_blackstone_bricks.json index e37d3f79..d8711c81 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_bricks.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_bricks", + "translation_key": "block.minecraft.polished_blackstone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_button.json b/src/main/generated/data/minecraft/item/polished_blackstone_button.json index 28fa1f13..2fa3fec3 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_button.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_button.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_button" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_button", + "translation_key": "block.minecraft.polished_blackstone_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_pressure_plate.json b/src/main/generated/data/minecraft/item/polished_blackstone_pressure_plate.json index 77ea3242..1cf423e6 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_pressure_plate", + "translation_key": "block.minecraft.polished_blackstone_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_slab.json b/src/main/generated/data/minecraft/item/polished_blackstone_slab.json index 8e69e3e4..107fe4ef 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_slab.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_slab", + "translation_key": "block.minecraft.polished_blackstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_stairs.json b/src/main/generated/data/minecraft/item/polished_blackstone_stairs.json index d9e10057..68a7ad6c 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_stairs", + "translation_key": "block.minecraft.polished_blackstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_blackstone_wall.json b/src/main/generated/data/minecraft/item/polished_blackstone_wall.json index 9bdd5738..82dd6d1a 100644 --- a/src/main/generated/data/minecraft/item/polished_blackstone_wall.json +++ b/src/main/generated/data/minecraft/item/polished_blackstone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_blackstone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_blackstone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_blackstone_wall", + "translation_key": "block.minecraft.polished_blackstone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_deepslate.json b/src/main/generated/data/minecraft/item/polished_deepslate.json index db9f8dab..3463e90e 100644 --- a/src/main/generated/data/minecraft/item/polished_deepslate.json +++ b/src/main/generated/data/minecraft/item/polished_deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_deepslate", + "translation_key": "block.minecraft.polished_deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_deepslate_slab.json b/src/main/generated/data/minecraft/item/polished_deepslate_slab.json index d77bc571..14058df0 100644 --- a/src/main/generated/data/minecraft/item/polished_deepslate_slab.json +++ b/src/main/generated/data/minecraft/item/polished_deepslate_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_deepslate_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_deepslate_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_deepslate_slab", + "translation_key": "block.minecraft.polished_deepslate_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_deepslate_stairs.json b/src/main/generated/data/minecraft/item/polished_deepslate_stairs.json index 4bf793b4..1cd7c8b3 100644 --- a/src/main/generated/data/minecraft/item/polished_deepslate_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_deepslate_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_deepslate_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_deepslate_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_deepslate_stairs", + "translation_key": "block.minecraft.polished_deepslate_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_deepslate_wall.json b/src/main/generated/data/minecraft/item/polished_deepslate_wall.json index 0f010dd1..7ed1a3e7 100644 --- a/src/main/generated/data/minecraft/item/polished_deepslate_wall.json +++ b/src/main/generated/data/minecraft/item/polished_deepslate_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_deepslate_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_deepslate_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_deepslate_wall", + "translation_key": "block.minecraft.polished_deepslate_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_diorite.json b/src/main/generated/data/minecraft/item/polished_diorite.json index 370e7c62..56253478 100644 --- a/src/main/generated/data/minecraft/item/polished_diorite.json +++ b/src/main/generated/data/minecraft/item/polished_diorite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_diorite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_diorite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_diorite", + "translation_key": "block.minecraft.polished_diorite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_diorite_slab.json b/src/main/generated/data/minecraft/item/polished_diorite_slab.json index e9544fb0..a77aae45 100644 --- a/src/main/generated/data/minecraft/item/polished_diorite_slab.json +++ b/src/main/generated/data/minecraft/item/polished_diorite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_diorite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_diorite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_diorite_slab", + "translation_key": "block.minecraft.polished_diorite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_diorite_stairs.json b/src/main/generated/data/minecraft/item/polished_diorite_stairs.json index 17c457c7..e22ac891 100644 --- a/src/main/generated/data/minecraft/item/polished_diorite_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_diorite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_diorite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_diorite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_diorite_stairs", + "translation_key": "block.minecraft.polished_diorite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_granite.json b/src/main/generated/data/minecraft/item/polished_granite.json index 8ebaf059..621a2f4f 100644 --- a/src/main/generated/data/minecraft/item/polished_granite.json +++ b/src/main/generated/data/minecraft/item/polished_granite.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_granite" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_granite" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_granite", + "translation_key": "block.minecraft.polished_granite" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_granite_slab.json b/src/main/generated/data/minecraft/item/polished_granite_slab.json index 6f52fea9..db45386a 100644 --- a/src/main/generated/data/minecraft/item/polished_granite_slab.json +++ b/src/main/generated/data/minecraft/item/polished_granite_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_granite_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_granite_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_granite_slab", + "translation_key": "block.minecraft.polished_granite_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_granite_stairs.json b/src/main/generated/data/minecraft/item/polished_granite_stairs.json index 1a97ed78..ce664d84 100644 --- a/src/main/generated/data/minecraft/item/polished_granite_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_granite_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_granite_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_granite_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_granite_stairs", + "translation_key": "block.minecraft.polished_granite_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_tuff.json b/src/main/generated/data/minecraft/item/polished_tuff.json index 738082ed..045b4d5b 100644 --- a/src/main/generated/data/minecraft/item/polished_tuff.json +++ b/src/main/generated/data/minecraft/item/polished_tuff.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_tuff" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_tuff" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_tuff", + "translation_key": "block.minecraft.polished_tuff" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_tuff_slab.json b/src/main/generated/data/minecraft/item/polished_tuff_slab.json index 91997932..b40bf27b 100644 --- a/src/main/generated/data/minecraft/item/polished_tuff_slab.json +++ b/src/main/generated/data/minecraft/item/polished_tuff_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_tuff_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_tuff_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_tuff_slab", + "translation_key": "block.minecraft.polished_tuff_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_tuff_stairs.json b/src/main/generated/data/minecraft/item/polished_tuff_stairs.json index d1a72d9d..466745d3 100644 --- a/src/main/generated/data/minecraft/item/polished_tuff_stairs.json +++ b/src/main/generated/data/minecraft/item/polished_tuff_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_tuff_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_tuff_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_tuff_stairs", + "translation_key": "block.minecraft.polished_tuff_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/polished_tuff_wall.json b/src/main/generated/data/minecraft/item/polished_tuff_wall.json index 11d3873e..81752094 100644 --- a/src/main/generated/data/minecraft/item/polished_tuff_wall.json +++ b/src/main/generated/data/minecraft/item/polished_tuff_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.polished_tuff_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:polished_tuff_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:polished_tuff_wall", + "translation_key": "block.minecraft.polished_tuff_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/popped_chorus_fruit.json b/src/main/generated/data/minecraft/item/popped_chorus_fruit.json index 0948f7bb..45bf71be 100644 --- a/src/main/generated/data/minecraft/item/popped_chorus_fruit.json +++ b/src/main/generated/data/minecraft/item/popped_chorus_fruit.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.popped_chorus_fruit" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:popped_chorus_fruit", + "translation_key": "item.minecraft.popped_chorus_fruit" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/poppy.json b/src/main/generated/data/minecraft/item/poppy.json index 45c3f7eb..38d98e0b 100644 --- a/src/main/generated/data/minecraft/item/poppy.json +++ b/src/main/generated/data/minecraft/item/poppy.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.poppy" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:poppy" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:poppy", + "translation_key": "block.minecraft.poppy" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/porkchop.json b/src/main/generated/data/minecraft/item/porkchop.json index ae53a3c2..8fb1221b 100644 --- a/src/main/generated/data/minecraft/item/porkchop.json +++ b/src/main/generated/data/minecraft/item/porkchop.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.porkchop" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 3, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:porkchop", + "translation_key": "item.minecraft.porkchop" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/potato.json b/src/main/generated/data/minecraft/item/potato.json index b4714914..cdbc3269 100644 --- a/src/main/generated/data/minecraft/item/potato.json +++ b/src/main/generated/data/minecraft/item/potato.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.potato" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:potatoes" }, @@ -22,5 +19,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:potato", + "translation_key": "item.minecraft.potato" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/potion.json b/src/main/generated/data/minecraft/item/potion.json index 19fb7895..135fdea3 100644 --- a/src/main/generated/data/minecraft/item/potion.json +++ b/src/main/generated/data/minecraft/item/potion.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.potion" - }, - "components": { + "behavior": { "minecraft:consumable": { "has_consume_particles": false, "sound": "minecraft:entity.generic.drink" @@ -32,6 +29,10 @@ } } }, + "display": { + "model": "minecraft:potion", + "translation_key": "item.minecraft.potion" + }, "events": { "minecraft:use_on_block": { "action": [ diff --git a/src/main/generated/data/minecraft/item/powder_snow_bucket.json b/src/main/generated/data/minecraft/item/powder_snow_bucket.json index 42733039..46c9f11b 100644 --- a/src/main/generated/data/minecraft/item/powder_snow_bucket.json +++ b/src/main/generated/data/minecraft/item/powder_snow_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.powder_snow_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "block": "minecraft:powder_snow", "emptying_sound_event": "minecraft:item.bucket.empty_powder_snow", @@ -12,5 +9,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:powder_snow_bucket", + "translation_key": "item.minecraft.powder_snow_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/powered_rail.json b/src/main/generated/data/minecraft/item/powered_rail.json index 32fe2c60..68406987 100644 --- a/src/main/generated/data/minecraft/item/powered_rail.json +++ b/src/main/generated/data/minecraft/item/powered_rail.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.powered_rail" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:powered_rail" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:powered_rail", + "translation_key": "block.minecraft.powered_rail" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine.json b/src/main/generated/data/minecraft/item/prismarine.json index 089dc068..e0923433 100644 --- a/src/main/generated/data/minecraft/item/prismarine.json +++ b/src/main/generated/data/minecraft/item/prismarine.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine", + "translation_key": "block.minecraft.prismarine" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_brick_slab.json b/src/main/generated/data/minecraft/item/prismarine_brick_slab.json index 4c32bfa0..bc4084d4 100644 --- a/src/main/generated/data/minecraft/item/prismarine_brick_slab.json +++ b/src/main/generated/data/minecraft/item/prismarine_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_brick_slab", + "translation_key": "block.minecraft.prismarine_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_brick_stairs.json b/src/main/generated/data/minecraft/item/prismarine_brick_stairs.json index b79e5ef5..01fdc4e5 100644 --- a/src/main/generated/data/minecraft/item/prismarine_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/prismarine_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_brick_stairs", + "translation_key": "block.minecraft.prismarine_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_bricks.json b/src/main/generated/data/minecraft/item/prismarine_bricks.json index 9393a49d..92242b57 100644 --- a/src/main/generated/data/minecraft/item/prismarine_bricks.json +++ b/src/main/generated/data/minecraft/item/prismarine_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_bricks", + "translation_key": "block.minecraft.prismarine_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_crystals.json b/src/main/generated/data/minecraft/item/prismarine_crystals.json index 3e42ef78..a644b73a 100644 --- a/src/main/generated/data/minecraft/item/prismarine_crystals.json +++ b/src/main/generated/data/minecraft/item/prismarine_crystals.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.prismarine_crystals" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_crystals", + "translation_key": "item.minecraft.prismarine_crystals" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_shard.json b/src/main/generated/data/minecraft/item/prismarine_shard.json index 78bc5036..fc24a1f2 100644 --- a/src/main/generated/data/minecraft/item/prismarine_shard.json +++ b/src/main/generated/data/minecraft/item/prismarine_shard.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.prismarine_shard" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_shard", + "translation_key": "item.minecraft.prismarine_shard" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_slab.json b/src/main/generated/data/minecraft/item/prismarine_slab.json index 35815a29..742d00be 100644 --- a/src/main/generated/data/minecraft/item/prismarine_slab.json +++ b/src/main/generated/data/minecraft/item/prismarine_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_slab", + "translation_key": "block.minecraft.prismarine_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_stairs.json b/src/main/generated/data/minecraft/item/prismarine_stairs.json index 577c716e..117b9c70 100644 --- a/src/main/generated/data/minecraft/item/prismarine_stairs.json +++ b/src/main/generated/data/minecraft/item/prismarine_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_stairs", + "translation_key": "block.minecraft.prismarine_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prismarine_wall.json b/src/main/generated/data/minecraft/item/prismarine_wall.json index b75b2f35..596076c5 100644 --- a/src/main/generated/data/minecraft/item/prismarine_wall.json +++ b/src/main/generated/data/minecraft/item/prismarine_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.prismarine_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:prismarine_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prismarine_wall", + "translation_key": "block.minecraft.prismarine_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/prize_pottery_sherd.json b/src/main/generated/data/minecraft/item/prize_pottery_sherd.json index b63f8594..c30eae76 100644 --- a/src/main/generated/data/minecraft/item/prize_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/prize_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.prize_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:prize" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:prize_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.prize_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pufferfish.json b/src/main/generated/data/minecraft/item/pufferfish.json index fd62bc51..cafcf896 100644 --- a/src/main/generated/data/minecraft/item/pufferfish.json +++ b/src/main/generated/data/minecraft/item/pufferfish.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pufferfish" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 1, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:pufferfish", + "translation_key": "item.minecraft.pufferfish" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/pufferfish_bucket.json b/src/main/generated/data/minecraft/item/pufferfish_bucket.json index b768055c..900a80d5 100644 --- a/src/main/generated/data/minecraft/item/pufferfish_bucket.json +++ b/src/main/generated/data/minecraft/item/pufferfish_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pufferfish_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_fish", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:pufferfish_bucket", + "translation_key": "item.minecraft.pufferfish_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json b/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json index 9182ef47..ec406b78 100644 --- a/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/pufferfish_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pufferfish_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:pufferfish_spawn_egg", + "translation_key": "item.minecraft.pufferfish_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pumpkin.json b/src/main/generated/data/minecraft/item/pumpkin.json index 1bf52f8a..fb76935a 100644 --- a/src/main/generated/data/minecraft/item/pumpkin.json +++ b/src/main/generated/data/minecraft/item/pumpkin.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.pumpkin" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pumpkin" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pumpkin", + "translation_key": "block.minecraft.pumpkin" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pumpkin_pie.json b/src/main/generated/data/minecraft/item/pumpkin_pie.json index 4c510cf1..7c2a7532 100644 --- a/src/main/generated/data/minecraft/item/pumpkin_pie.json +++ b/src/main/generated/data/minecraft/item/pumpkin_pie.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pumpkin_pie" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 1.0 }, @@ -19,5 +16,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:pumpkin_pie", + "translation_key": "item.minecraft.pumpkin_pie" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pumpkin_seeds.json b/src/main/generated/data/minecraft/item/pumpkin_seeds.json index bc444b2d..5e004d34 100644 --- a/src/main/generated/data/minecraft/item/pumpkin_seeds.json +++ b/src/main/generated/data/minecraft/item/pumpkin_seeds.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.pumpkin_seeds" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:pumpkin_stem" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:pumpkin_seeds", + "translation_key": "item.minecraft.pumpkin_seeds" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_banner.json b/src/main/generated/data/minecraft/item/purple_banner.json index e1e23166..40ae0a58 100644 --- a/src/main/generated/data/minecraft/item/purple_banner.json +++ b/src/main/generated/data/minecraft/item/purple_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.purple_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "purple" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:purple_banner", + "translation_key": "block.minecraft.purple_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_bed.json b/src/main/generated/data/minecraft/item/purple_bed.json index 42a781d7..b939a74e 100644 --- a/src/main/generated/data/minecraft/item/purple_bed.json +++ b/src/main/generated/data/minecraft/item/purple_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:purple_bed", + "translation_key": "block.minecraft.purple_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_candle.json b/src/main/generated/data/minecraft/item/purple_candle.json index 5ded3d1f..020ffafe 100644 --- a/src/main/generated/data/minecraft/item/purple_candle.json +++ b/src/main/generated/data/minecraft/item/purple_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_candle", + "translation_key": "block.minecraft.purple_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_carpet.json b/src/main/generated/data/minecraft/item/purple_carpet.json index 114baad7..3a84ffb5 100644 --- a/src/main/generated/data/minecraft/item/purple_carpet.json +++ b/src/main/generated/data/minecraft/item/purple_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.purple_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:purple_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_carpet", + "translation_key": "block.minecraft.purple_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_concrete.json b/src/main/generated/data/minecraft/item/purple_concrete.json index c0d89182..30eb8f7f 100644 --- a/src/main/generated/data/minecraft/item/purple_concrete.json +++ b/src/main/generated/data/minecraft/item/purple_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_concrete", + "translation_key": "block.minecraft.purple_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_concrete_powder.json b/src/main/generated/data/minecraft/item/purple_concrete_powder.json index fa2852fd..26a1f9e5 100644 --- a/src/main/generated/data/minecraft/item/purple_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/purple_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_concrete_powder", + "translation_key": "block.minecraft.purple_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_dye.json b/src/main/generated/data/minecraft/item/purple_dye.json index 71ef540b..5530ab19 100644 --- a/src/main/generated/data/minecraft/item/purple_dye.json +++ b/src/main/generated/data/minecraft/item/purple_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.purple_dye" - }, - "components": { + "behavior": { "minecraft:dye": "purple", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_dye", + "translation_key": "item.minecraft.purple_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_glazed_terracotta.json b/src/main/generated/data/minecraft/item/purple_glazed_terracotta.json index d4954c32..1ef077e1 100644 --- a/src/main/generated/data/minecraft/item/purple_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/purple_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_glazed_terracotta", + "translation_key": "block.minecraft.purple_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_shulker_box.json b/src/main/generated/data/minecraft/item/purple_shulker_box.json index 208ab661..b1265f42 100644 --- a/src/main/generated/data/minecraft/item/purple_shulker_box.json +++ b/src/main/generated/data/minecraft/item/purple_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.purple_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:purple_shulker_box", + "translation_key": "block.minecraft.purple_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_stained_glass.json b/src/main/generated/data/minecraft/item/purple_stained_glass.json index 8a0b9dfe..df8ee95e 100644 --- a/src/main/generated/data/minecraft/item/purple_stained_glass.json +++ b/src/main/generated/data/minecraft/item/purple_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_stained_glass", + "translation_key": "block.minecraft.purple_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_stained_glass_pane.json b/src/main/generated/data/minecraft/item/purple_stained_glass_pane.json index 75668eb3..08d39c20 100644 --- a/src/main/generated/data/minecraft/item/purple_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/purple_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_stained_glass_pane", + "translation_key": "block.minecraft.purple_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_terracotta.json b/src/main/generated/data/minecraft/item/purple_terracotta.json index a23cd5a8..2567e09e 100644 --- a/src/main/generated/data/minecraft/item/purple_terracotta.json +++ b/src/main/generated/data/minecraft/item/purple_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purple_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_terracotta", + "translation_key": "block.minecraft.purple_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_wool.json b/src/main/generated/data/minecraft/item/purple_wool.json index ba6b57d0..6397549e 100644 --- a/src/main/generated/data/minecraft/item/purple_wool.json +++ b/src/main/generated/data/minecraft/item/purple_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.purple_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purple_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purple_wool", + "translation_key": "block.minecraft.purple_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purpur_block.json b/src/main/generated/data/minecraft/item/purpur_block.json index 58315a34..747db09d 100644 --- a/src/main/generated/data/minecraft/item/purpur_block.json +++ b/src/main/generated/data/minecraft/item/purpur_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purpur_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purpur_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purpur_block", + "translation_key": "block.minecraft.purpur_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purpur_pillar.json b/src/main/generated/data/minecraft/item/purpur_pillar.json index c28ef2f5..052e1961 100644 --- a/src/main/generated/data/minecraft/item/purpur_pillar.json +++ b/src/main/generated/data/minecraft/item/purpur_pillar.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purpur_pillar" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purpur_pillar" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purpur_pillar", + "translation_key": "block.minecraft.purpur_pillar" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purpur_slab.json b/src/main/generated/data/minecraft/item/purpur_slab.json index 3e0d63b8..ae9198b2 100644 --- a/src/main/generated/data/minecraft/item/purpur_slab.json +++ b/src/main/generated/data/minecraft/item/purpur_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purpur_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purpur_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purpur_slab", + "translation_key": "block.minecraft.purpur_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purpur_stairs.json b/src/main/generated/data/minecraft/item/purpur_stairs.json index 5f30d473..38f57563 100644 --- a/src/main/generated/data/minecraft/item/purpur_stairs.json +++ b/src/main/generated/data/minecraft/item/purpur_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.purpur_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:purpur_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:purpur_stairs", + "translation_key": "block.minecraft.purpur_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz.json b/src/main/generated/data/minecraft/item/quartz.json index 5952967c..5b2dccf6 100644 --- a/src/main/generated/data/minecraft/item/quartz.json +++ b/src/main/generated/data/minecraft/item/quartz.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.quartz" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz", + "translation_key": "item.minecraft.quartz" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz_block.json b/src/main/generated/data/minecraft/item/quartz_block.json index c6b7b06b..38d74cce 100644 --- a/src/main/generated/data/minecraft/item/quartz_block.json +++ b/src/main/generated/data/minecraft/item/quartz_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.quartz_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:quartz_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz_block", + "translation_key": "block.minecraft.quartz_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz_bricks.json b/src/main/generated/data/minecraft/item/quartz_bricks.json index e23430d9..81948b39 100644 --- a/src/main/generated/data/minecraft/item/quartz_bricks.json +++ b/src/main/generated/data/minecraft/item/quartz_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.quartz_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:quartz_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz_bricks", + "translation_key": "block.minecraft.quartz_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz_pillar.json b/src/main/generated/data/minecraft/item/quartz_pillar.json index d77ab851..8a7895fa 100644 --- a/src/main/generated/data/minecraft/item/quartz_pillar.json +++ b/src/main/generated/data/minecraft/item/quartz_pillar.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.quartz_pillar" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:quartz_pillar" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz_pillar", + "translation_key": "block.minecraft.quartz_pillar" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz_slab.json b/src/main/generated/data/minecraft/item/quartz_slab.json index 59ef3dd5..1ab833f7 100644 --- a/src/main/generated/data/minecraft/item/quartz_slab.json +++ b/src/main/generated/data/minecraft/item/quartz_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.quartz_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:quartz_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz_slab", + "translation_key": "block.minecraft.quartz_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/quartz_stairs.json b/src/main/generated/data/minecraft/item/quartz_stairs.json index 1ec76a1b..67637be7 100644 --- a/src/main/generated/data/minecraft/item/quartz_stairs.json +++ b/src/main/generated/data/minecraft/item/quartz_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.quartz_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:quartz_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:quartz_stairs", + "translation_key": "block.minecraft.quartz_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit.json b/src/main/generated/data/minecraft/item/rabbit.json index 4092fff3..468d74a0 100644 --- a/src/main/generated/data/minecraft/item/rabbit.json +++ b/src/main/generated/data/minecraft/item/rabbit.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.rabbit" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 3, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:rabbit", + "translation_key": "item.minecraft.rabbit" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_foot.json b/src/main/generated/data/minecraft/item/rabbit_foot.json index 0aa6e988..311d1164 100644 --- a/src/main/generated/data/minecraft/item/rabbit_foot.json +++ b/src/main/generated/data/minecraft/item/rabbit_foot.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.rabbit_foot" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rabbit_foot", + "translation_key": "item.minecraft.rabbit_foot" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_hide.json b/src/main/generated/data/minecraft/item/rabbit_hide.json index c4d6e729..4d9aacd8 100644 --- a/src/main/generated/data/minecraft/item/rabbit_hide.json +++ b/src/main/generated/data/minecraft/item/rabbit_hide.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.rabbit_hide" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rabbit_hide", + "translation_key": "item.minecraft.rabbit_hide" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json b/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json index a42f5ea0..2efb9add 100644 --- a/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/rabbit_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.rabbit_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:rabbit_spawn_egg", + "translation_key": "item.minecraft.rabbit_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rabbit_stew.json b/src/main/generated/data/minecraft/item/rabbit_stew.json index aea402ee..935cdf9d 100644 --- a/src/main/generated/data/minecraft/item/rabbit_stew.json +++ b/src/main/generated/data/minecraft/item/rabbit_stew.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.rabbit_stew" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 10, @@ -20,5 +17,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:rabbit_stew", + "translation_key": "item.minecraft.rabbit_stew" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rail.json b/src/main/generated/data/minecraft/item/rail.json index dabf5a6e..d269e610 100644 --- a/src/main/generated/data/minecraft/item/rail.json +++ b/src/main/generated/data/minecraft/item/rail.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.rail" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:rail" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rail", + "translation_key": "block.minecraft.rail" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json index d607aa58..28303a03 100644 --- a/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/raiser_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.raiser_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:raiser_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raiser_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.raiser_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ravager_spawn_egg.json b/src/main/generated/data/minecraft/item/ravager_spawn_egg.json index d3e75881..1133b816 100644 --- a/src/main/generated/data/minecraft/item/ravager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/ravager_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.ravager_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:ravager_spawn_egg", + "translation_key": "item.minecraft.ravager_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_copper.json b/src/main/generated/data/minecraft/item/raw_copper.json index 330f7616..7f17d83c 100644 --- a/src/main/generated/data/minecraft/item/raw_copper.json +++ b/src/main/generated/data/minecraft/item/raw_copper.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.raw_copper" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_copper", + "translation_key": "item.minecraft.raw_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_copper_block.json b/src/main/generated/data/minecraft/item/raw_copper_block.json index 1b6d7295..e0b8ee41 100644 --- a/src/main/generated/data/minecraft/item/raw_copper_block.json +++ b/src/main/generated/data/minecraft/item/raw_copper_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.raw_copper_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:raw_copper_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_copper_block", + "translation_key": "block.minecraft.raw_copper_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_gold.json b/src/main/generated/data/minecraft/item/raw_gold.json index 45c46278..09c60386 100644 --- a/src/main/generated/data/minecraft/item/raw_gold.json +++ b/src/main/generated/data/minecraft/item/raw_gold.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.raw_gold" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_gold", + "translation_key": "item.minecraft.raw_gold" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_gold_block.json b/src/main/generated/data/minecraft/item/raw_gold_block.json index cdfd14d1..097d02d6 100644 --- a/src/main/generated/data/minecraft/item/raw_gold_block.json +++ b/src/main/generated/data/minecraft/item/raw_gold_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.raw_gold_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:raw_gold_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_gold_block", + "translation_key": "block.minecraft.raw_gold_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_iron.json b/src/main/generated/data/minecraft/item/raw_iron.json index d442d422..417a524b 100644 --- a/src/main/generated/data/minecraft/item/raw_iron.json +++ b/src/main/generated/data/minecraft/item/raw_iron.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.raw_iron" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_iron", + "translation_key": "item.minecraft.raw_iron" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/raw_iron_block.json b/src/main/generated/data/minecraft/item/raw_iron_block.json index a3043507..e2eebfda 100644 --- a/src/main/generated/data/minecraft/item/raw_iron_block.json +++ b/src/main/generated/data/minecraft/item/raw_iron_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.raw_iron_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:raw_iron_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:raw_iron_block", + "translation_key": "block.minecraft.raw_iron_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/recovery_compass.json b/src/main/generated/data/minecraft/item/recovery_compass.json index 25e519be..4981ef3e 100644 --- a/src/main/generated/data/minecraft/item/recovery_compass.json +++ b/src/main/generated/data/minecraft/item/recovery_compass.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.recovery_compass" - }, - "components": { + "behavior": { "minecraft:pointable": { "points_to": "minecraft:last_death" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:recovery_compass", + "rarity": "uncommon", + "translation_key": "item.minecraft.recovery_compass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_banner.json b/src/main/generated/data/minecraft/item/red_banner.json index 39e6b1b6..5d54f346 100644 --- a/src/main/generated/data/minecraft/item/red_banner.json +++ b/src/main/generated/data/minecraft/item/red_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "red" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:red_banner", + "translation_key": "block.minecraft.red_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_bed.json b/src/main/generated/data/minecraft/item/red_bed.json index b9eab52c..eee41d49 100644 --- a/src/main/generated/data/minecraft/item/red_bed.json +++ b/src/main/generated/data/minecraft/item/red_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:red_bed", + "translation_key": "block.minecraft.red_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_candle.json b/src/main/generated/data/minecraft/item/red_candle.json index 4d0bf885..4df74968 100644 --- a/src/main/generated/data/minecraft/item/red_candle.json +++ b/src/main/generated/data/minecraft/item/red_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_candle", + "translation_key": "block.minecraft.red_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_carpet.json b/src/main/generated/data/minecraft/item/red_carpet.json index 9faccca2..56010196 100644 --- a/src/main/generated/data/minecraft/item/red_carpet.json +++ b/src/main/generated/data/minecraft/item/red_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:red_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_carpet", + "translation_key": "block.minecraft.red_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_concrete.json b/src/main/generated/data/minecraft/item/red_concrete.json index e3cdb5b5..10d663b3 100644 --- a/src/main/generated/data/minecraft/item/red_concrete.json +++ b/src/main/generated/data/minecraft/item/red_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_concrete", + "translation_key": "block.minecraft.red_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_concrete_powder.json b/src/main/generated/data/minecraft/item/red_concrete_powder.json index b5b15c55..771d8543 100644 --- a/src/main/generated/data/minecraft/item/red_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/red_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_concrete_powder", + "translation_key": "block.minecraft.red_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_dye.json b/src/main/generated/data/minecraft/item/red_dye.json index 03289e99..a74ea217 100644 --- a/src/main/generated/data/minecraft/item/red_dye.json +++ b/src/main/generated/data/minecraft/item/red_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.red_dye" - }, - "components": { + "behavior": { "minecraft:dye": "red", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_dye", + "translation_key": "item.minecraft.red_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_glazed_terracotta.json b/src/main/generated/data/minecraft/item/red_glazed_terracotta.json index 37f69053..2ecdf5cc 100644 --- a/src/main/generated/data/minecraft/item/red_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/red_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_glazed_terracotta", + "translation_key": "block.minecraft.red_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_mushroom.json b/src/main/generated/data/minecraft/item/red_mushroom.json index 70c93c60..933703c9 100644 --- a/src/main/generated/data/minecraft/item/red_mushroom.json +++ b/src/main/generated/data/minecraft/item/red_mushroom.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_mushroom" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_mushroom" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:red_mushroom", + "translation_key": "block.minecraft.red_mushroom" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/red_mushroom_block.json b/src/main/generated/data/minecraft/item/red_mushroom_block.json index 19fc4c24..495138da 100644 --- a/src/main/generated/data/minecraft/item/red_mushroom_block.json +++ b/src/main/generated/data/minecraft/item/red_mushroom_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_mushroom_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_mushroom_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_mushroom_block", + "translation_key": "block.minecraft.red_mushroom_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_nether_brick_slab.json b/src/main/generated/data/minecraft/item/red_nether_brick_slab.json index cd04e787..a1d00675 100644 --- a/src/main/generated/data/minecraft/item/red_nether_brick_slab.json +++ b/src/main/generated/data/minecraft/item/red_nether_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_nether_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_nether_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_nether_brick_slab", + "translation_key": "block.minecraft.red_nether_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_nether_brick_stairs.json b/src/main/generated/data/minecraft/item/red_nether_brick_stairs.json index 5a59a9ea..330dc31e 100644 --- a/src/main/generated/data/minecraft/item/red_nether_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/red_nether_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_nether_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_nether_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_nether_brick_stairs", + "translation_key": "block.minecraft.red_nether_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_nether_brick_wall.json b/src/main/generated/data/minecraft/item/red_nether_brick_wall.json index 8e04ebef..ffc1cbdb 100644 --- a/src/main/generated/data/minecraft/item/red_nether_brick_wall.json +++ b/src/main/generated/data/minecraft/item/red_nether_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_nether_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_nether_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_nether_brick_wall", + "translation_key": "block.minecraft.red_nether_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_nether_bricks.json b/src/main/generated/data/minecraft/item/red_nether_bricks.json index 0df6ebe9..fbe50c84 100644 --- a/src/main/generated/data/minecraft/item/red_nether_bricks.json +++ b/src/main/generated/data/minecraft/item/red_nether_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_nether_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_nether_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_nether_bricks", + "translation_key": "block.minecraft.red_nether_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_sand.json b/src/main/generated/data/minecraft/item/red_sand.json index e5d7e71e..da3c1092 100644 --- a/src/main/generated/data/minecraft/item/red_sand.json +++ b/src/main/generated/data/minecraft/item/red_sand.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_sand" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_sand" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_sand", + "translation_key": "block.minecraft.red_sand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_sandstone.json b/src/main/generated/data/minecraft/item/red_sandstone.json index ecc08a49..3a87d2b9 100644 --- a/src/main/generated/data/minecraft/item/red_sandstone.json +++ b/src/main/generated/data/minecraft/item/red_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_sandstone", + "translation_key": "block.minecraft.red_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_sandstone_slab.json b/src/main/generated/data/minecraft/item/red_sandstone_slab.json index 58d999be..ba49f58a 100644 --- a/src/main/generated/data/minecraft/item/red_sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/red_sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_sandstone_slab", + "translation_key": "block.minecraft.red_sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_sandstone_stairs.json b/src/main/generated/data/minecraft/item/red_sandstone_stairs.json index 2ddcb432..651baa43 100644 --- a/src/main/generated/data/minecraft/item/red_sandstone_stairs.json +++ b/src/main/generated/data/minecraft/item/red_sandstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_sandstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_sandstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_sandstone_stairs", + "translation_key": "block.minecraft.red_sandstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_sandstone_wall.json b/src/main/generated/data/minecraft/item/red_sandstone_wall.json index 7bf20cca..f170db5a 100644 --- a/src/main/generated/data/minecraft/item/red_sandstone_wall.json +++ b/src/main/generated/data/minecraft/item/red_sandstone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_sandstone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_sandstone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_sandstone_wall", + "translation_key": "block.minecraft.red_sandstone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_shulker_box.json b/src/main/generated/data/minecraft/item/red_shulker_box.json index 720b48a0..6daa3b88 100644 --- a/src/main/generated/data/minecraft/item/red_shulker_box.json +++ b/src/main/generated/data/minecraft/item/red_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:red_shulker_box", + "translation_key": "block.minecraft.red_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_stained_glass.json b/src/main/generated/data/minecraft/item/red_stained_glass.json index fa3218d1..ea2cfb4d 100644 --- a/src/main/generated/data/minecraft/item/red_stained_glass.json +++ b/src/main/generated/data/minecraft/item/red_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_stained_glass", + "translation_key": "block.minecraft.red_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_stained_glass_pane.json b/src/main/generated/data/minecraft/item/red_stained_glass_pane.json index 101ea2e8..ee619dd6 100644 --- a/src/main/generated/data/minecraft/item/red_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/red_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_stained_glass_pane", + "translation_key": "block.minecraft.red_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_terracotta.json b/src/main/generated/data/minecraft/item/red_terracotta.json index e1e904c9..5a7c18e9 100644 --- a/src/main/generated/data/minecraft/item/red_terracotta.json +++ b/src/main/generated/data/minecraft/item/red_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.red_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_terracotta", + "translation_key": "block.minecraft.red_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_tulip.json b/src/main/generated/data/minecraft/item/red_tulip.json index e29dfe95..11190e0b 100644 --- a/src/main/generated/data/minecraft/item/red_tulip.json +++ b/src/main/generated/data/minecraft/item/red_tulip.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_tulip" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_tulip" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:red_tulip", + "translation_key": "block.minecraft.red_tulip" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/red_wool.json b/src/main/generated/data/minecraft/item/red_wool.json index f2085977..5942c5c1 100644 --- a/src/main/generated/data/minecraft/item/red_wool.json +++ b/src/main/generated/data/minecraft/item/red_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.red_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:red_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:red_wool", + "translation_key": "block.minecraft.red_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/redstone.json b/src/main/generated/data/minecraft/item/redstone.json index 5cce463f..ae531cec 100644 --- a/src/main/generated/data/minecraft/item/redstone.json +++ b/src/main/generated/data/minecraft/item/redstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.redstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:redstone_wire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:redstone", + "translation_key": "item.minecraft.redstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/redstone_block.json b/src/main/generated/data/minecraft/item/redstone_block.json index 42c15630..ac4d35f8 100644 --- a/src/main/generated/data/minecraft/item/redstone_block.json +++ b/src/main/generated/data/minecraft/item/redstone_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.redstone_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:redstone_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:redstone_block", + "translation_key": "block.minecraft.redstone_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/redstone_lamp.json b/src/main/generated/data/minecraft/item/redstone_lamp.json index 76fde766..c9b65f6e 100644 --- a/src/main/generated/data/minecraft/item/redstone_lamp.json +++ b/src/main/generated/data/minecraft/item/redstone_lamp.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.redstone_lamp" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:redstone_lamp" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:redstone_lamp", + "translation_key": "block.minecraft.redstone_lamp" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/redstone_ore.json b/src/main/generated/data/minecraft/item/redstone_ore.json index 213235da..2c2d6f24 100644 --- a/src/main/generated/data/minecraft/item/redstone_ore.json +++ b/src/main/generated/data/minecraft/item/redstone_ore.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.redstone_ore" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:redstone_ore" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:redstone_ore", + "translation_key": "block.minecraft.redstone_ore" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/redstone_torch.json b/src/main/generated/data/minecraft/item/redstone_torch.json index 28c7158e..78e00d93 100644 --- a/src/main/generated/data/minecraft/item/redstone_torch.json +++ b/src/main/generated/data/minecraft/item/redstone_torch.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.redstone_torch" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:redstone_torch", + "translation_key": "block.minecraft.redstone_torch" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/reinforced_deepslate.json b/src/main/generated/data/minecraft/item/reinforced_deepslate.json index b3d5e5bf..940759dd 100644 --- a/src/main/generated/data/minecraft/item/reinforced_deepslate.json +++ b/src/main/generated/data/minecraft/item/reinforced_deepslate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.reinforced_deepslate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:reinforced_deepslate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:reinforced_deepslate", + "translation_key": "block.minecraft.reinforced_deepslate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/repeater.json b/src/main/generated/data/minecraft/item/repeater.json index 34d9556b..fff91312 100644 --- a/src/main/generated/data/minecraft/item/repeater.json +++ b/src/main/generated/data/minecraft/item/repeater.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.repeater" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:repeater" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:repeater", + "translation_key": "block.minecraft.repeater" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/repeating_command_block.json b/src/main/generated/data/minecraft/item/repeating_command_block.json index 3cbe5361..fed50d37 100644 --- a/src/main/generated/data/minecraft/item/repeating_command_block.json +++ b/src/main/generated/data/minecraft/item/repeating_command_block.json @@ -1,13 +1,14 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.repeating_command_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:repeating_command_block", "operator_only": true }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:repeating_command_block", + "rarity": "epic", + "translation_key": "block.minecraft.repeating_command_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/respawn_anchor.json b/src/main/generated/data/minecraft/item/respawn_anchor.json index 0dc82515..d9387f7c 100644 --- a/src/main/generated/data/minecraft/item/respawn_anchor.json +++ b/src/main/generated/data/minecraft/item/respawn_anchor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.respawn_anchor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:respawn_anchor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:respawn_anchor", + "translation_key": "block.minecraft.respawn_anchor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json index ee02c0e9..53a66840 100644 --- a/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/rib_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.rib_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:rib_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rib_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.rib_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rooted_dirt.json b/src/main/generated/data/minecraft/item/rooted_dirt.json index 8b8efa3d..1ac61c4f 100644 --- a/src/main/generated/data/minecraft/item/rooted_dirt.json +++ b/src/main/generated/data/minecraft/item/rooted_dirt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.rooted_dirt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:rooted_dirt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rooted_dirt", + "translation_key": "block.minecraft.rooted_dirt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rose_bush.json b/src/main/generated/data/minecraft/item/rose_bush.json index 9f66ba6a..f3e0871f 100644 --- a/src/main/generated/data/minecraft/item/rose_bush.json +++ b/src/main/generated/data/minecraft/item/rose_bush.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.rose_bush" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:rose_bush" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:rose_bush", + "translation_key": "block.minecraft.rose_bush" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/rotten_flesh.json b/src/main/generated/data/minecraft/item/rotten_flesh.json index e15eee55..94dd1361 100644 --- a/src/main/generated/data/minecraft/item/rotten_flesh.json +++ b/src/main/generated/data/minecraft/item/rotten_flesh.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.rotten_flesh" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 4, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:rotten_flesh", + "translation_key": "item.minecraft.rotten_flesh" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/saddle.json b/src/main/generated/data/minecraft/item/saddle.json index 2ec78b7d..4fb39cdc 100644 --- a/src/main/generated/data/minecraft/item/saddle.json +++ b/src/main/generated/data/minecraft/item/saddle.json @@ -1,12 +1,13 @@ { - "base": { - "translation_key": "item.minecraft.saddle" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:saddle" }, "minecraft:saddle": {}, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:saddle", + "translation_key": "item.minecraft.saddle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/salmon.json b/src/main/generated/data/minecraft/item/salmon.json index 9135eff2..78045ffa 100644 --- a/src/main/generated/data/minecraft/item/salmon.json +++ b/src/main/generated/data/minecraft/item/salmon.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.salmon" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:salmon", + "translation_key": "item.minecraft.salmon" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/salmon_bucket.json b/src/main/generated/data/minecraft/item/salmon_bucket.json index f2530c40..f7423305 100644 --- a/src/main/generated/data/minecraft/item/salmon_bucket.json +++ b/src/main/generated/data/minecraft/item/salmon_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.salmon_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_fish", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:salmon_bucket", + "translation_key": "item.minecraft.salmon_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/salmon_spawn_egg.json b/src/main/generated/data/minecraft/item/salmon_spawn_egg.json index 62b99676..8b1cb9b1 100644 --- a/src/main/generated/data/minecraft/item/salmon_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/salmon_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.salmon_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:salmon_spawn_egg", + "translation_key": "item.minecraft.salmon_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sand.json b/src/main/generated/data/minecraft/item/sand.json index 7b590a24..d8658160 100644 --- a/src/main/generated/data/minecraft/item/sand.json +++ b/src/main/generated/data/minecraft/item/sand.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sand" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sand" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sand", + "translation_key": "block.minecraft.sand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sandstone.json b/src/main/generated/data/minecraft/item/sandstone.json index 74e9c659..65c0efe8 100644 --- a/src/main/generated/data/minecraft/item/sandstone.json +++ b/src/main/generated/data/minecraft/item/sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sandstone", + "translation_key": "block.minecraft.sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sandstone_slab.json b/src/main/generated/data/minecraft/item/sandstone_slab.json index efc73dae..5ad6ccbc 100644 --- a/src/main/generated/data/minecraft/item/sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sandstone_slab", + "translation_key": "block.minecraft.sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sandstone_stairs.json b/src/main/generated/data/minecraft/item/sandstone_stairs.json index 726a34b4..e2b6ddca 100644 --- a/src/main/generated/data/minecraft/item/sandstone_stairs.json +++ b/src/main/generated/data/minecraft/item/sandstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sandstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sandstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sandstone_stairs", + "translation_key": "block.minecraft.sandstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sandstone_wall.json b/src/main/generated/data/minecraft/item/sandstone_wall.json index 6d58e963..57d5bd45 100644 --- a/src/main/generated/data/minecraft/item/sandstone_wall.json +++ b/src/main/generated/data/minecraft/item/sandstone_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sandstone_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sandstone_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sandstone_wall", + "translation_key": "block.minecraft.sandstone_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/scaffolding.json b/src/main/generated/data/minecraft/item/scaffolding.json index 8edc3168..43d5dd1a 100644 --- a/src/main/generated/data/minecraft/item/scaffolding.json +++ b/src/main/generated/data/minecraft/item/scaffolding.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.scaffolding" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:scaffolding" }, @@ -10,5 +7,9 @@ "ticks": 50 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:scaffolding", + "translation_key": "block.minecraft.scaffolding" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json b/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json index dd0c220e..4a374eb1 100644 --- a/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/scrape_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.scrape_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:scrape" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:scrape_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.scrape_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sculk.json b/src/main/generated/data/minecraft/item/sculk.json index fa1760d7..78573ba1 100644 --- a/src/main/generated/data/minecraft/item/sculk.json +++ b/src/main/generated/data/minecraft/item/sculk.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sculk" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sculk" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sculk", + "translation_key": "block.minecraft.sculk" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sculk_catalyst.json b/src/main/generated/data/minecraft/item/sculk_catalyst.json index dc67d88b..b23896a5 100644 --- a/src/main/generated/data/minecraft/item/sculk_catalyst.json +++ b/src/main/generated/data/minecraft/item/sculk_catalyst.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sculk_catalyst" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sculk_catalyst" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sculk_catalyst", + "translation_key": "block.minecraft.sculk_catalyst" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sculk_sensor.json b/src/main/generated/data/minecraft/item/sculk_sensor.json index 2375acae..e60adea1 100644 --- a/src/main/generated/data/minecraft/item/sculk_sensor.json +++ b/src/main/generated/data/minecraft/item/sculk_sensor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sculk_sensor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sculk_sensor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sculk_sensor", + "translation_key": "block.minecraft.sculk_sensor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sculk_shrieker.json b/src/main/generated/data/minecraft/item/sculk_shrieker.json index d850d268..5335c641 100644 --- a/src/main/generated/data/minecraft/item/sculk_shrieker.json +++ b/src/main/generated/data/minecraft/item/sculk_shrieker.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sculk_shrieker" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sculk_shrieker" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sculk_shrieker", + "translation_key": "block.minecraft.sculk_shrieker" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sculk_vein.json b/src/main/generated/data/minecraft/item/sculk_vein.json index 3ed42147..625d1a5a 100644 --- a/src/main/generated/data/minecraft/item/sculk_vein.json +++ b/src/main/generated/data/minecraft/item/sculk_vein.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sculk_vein" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sculk_vein" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sculk_vein", + "translation_key": "block.minecraft.sculk_vein" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sea_lantern.json b/src/main/generated/data/minecraft/item/sea_lantern.json index 999abd88..feb3700b 100644 --- a/src/main/generated/data/minecraft/item/sea_lantern.json +++ b/src/main/generated/data/minecraft/item/sea_lantern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sea_lantern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sea_lantern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sea_lantern", + "translation_key": "block.minecraft.sea_lantern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sea_pickle.json b/src/main/generated/data/minecraft/item/sea_pickle.json index d94786b0..565c9004 100644 --- a/src/main/generated/data/minecraft/item/sea_pickle.json +++ b/src/main/generated/data/minecraft/item/sea_pickle.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.sea_pickle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sea_pickle" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sea_pickle", + "translation_key": "block.minecraft.sea_pickle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/seagrass.json b/src/main/generated/data/minecraft/item/seagrass.json index 0e008c1b..e50adfdb 100644 --- a/src/main/generated/data/minecraft/item/seagrass.json +++ b/src/main/generated/data/minecraft/item/seagrass.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.seagrass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:seagrass" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:seagrass", + "translation_key": "block.minecraft.seagrass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json index e8be4677..ec8605aa 100644 --- a/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/sentry_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.sentry_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:sentry_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sentry_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.sentry_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json index 75118861..79f22f63 100644 --- a/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/shaper_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.shaper_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:shaper_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:shaper_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.shaper_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json b/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json index 89342e8a..3b7b0907 100644 --- a/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/sheaf_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.sheaf_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:sheaf" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sheaf_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.sheaf_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shears.json b/src/main/generated/data/minecraft/item/shears.json index 6e838aa8..d4a70883 100644 --- a/src/main/generated/data/minecraft/item/shears.json +++ b/src/main/generated/data/minecraft/item/shears.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.shears" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 238 }, @@ -34,5 +31,9 @@ } ] } + }, + "display": { + "model": "minecraft:shears", + "translation_key": "item.minecraft.shears" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sheep_spawn_egg.json b/src/main/generated/data/minecraft/item/sheep_spawn_egg.json index 5ca28200..9deadb42 100644 --- a/src/main/generated/data/minecraft/item/sheep_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/sheep_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.sheep_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:sheep_spawn_egg", + "translation_key": "item.minecraft.sheep_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json b/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json index 13953b2d..31ede122 100644 --- a/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/shelter_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.shelter_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:shelter" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:shelter_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.shelter_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shield.json b/src/main/generated/data/minecraft/item/shield.json index d897a7f0..90d055b5 100644 --- a/src/main/generated/data/minecraft/item/shield.json +++ b/src/main/generated/data/minecraft/item/shield.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.shield" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": {}, "minecraft:damageable": { "durability": 336 @@ -11,7 +8,6 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "offhand" }, "minecraft:repairable": { @@ -24,5 +20,9 @@ "type": "minecraft:indefinite" } } + }, + "display": { + "model": "minecraft:shield", + "translation_key": "item.minecraft.shield" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/short_grass.json b/src/main/generated/data/minecraft/item/short_grass.json index b41deabc..bd25c24d 100644 --- a/src/main/generated/data/minecraft/item/short_grass.json +++ b/src/main/generated/data/minecraft/item/short_grass.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.short_grass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:short_grass" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:short_grass", + "translation_key": "block.minecraft.short_grass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shroomlight.json b/src/main/generated/data/minecraft/item/shroomlight.json index 92de1217..63ec8888 100644 --- a/src/main/generated/data/minecraft/item/shroomlight.json +++ b/src/main/generated/data/minecraft/item/shroomlight.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.shroomlight" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:shroomlight" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:shroomlight", + "translation_key": "block.minecraft.shroomlight" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shulker_box.json b/src/main/generated/data/minecraft/item/shulker_box.json index 7142a9cc..35af13fd 100644 --- a/src/main/generated/data/minecraft/item/shulker_box.json +++ b/src/main/generated/data/minecraft/item/shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:shulker_box", + "translation_key": "block.minecraft.shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shulker_shell.json b/src/main/generated/data/minecraft/item/shulker_shell.json index 062f6434..7625ec28 100644 --- a/src/main/generated/data/minecraft/item/shulker_shell.json +++ b/src/main/generated/data/minecraft/item/shulker_shell.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.shulker_shell" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:shulker_shell", + "translation_key": "item.minecraft.shulker_shell" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/shulker_spawn_egg.json b/src/main/generated/data/minecraft/item/shulker_spawn_egg.json index aa92968b..69f7012e 100644 --- a/src/main/generated/data/minecraft/item/shulker_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/shulker_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.shulker_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:shulker_spawn_egg", + "translation_key": "item.minecraft.shulker_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json index e5672fe5..2bcc7b87 100644 --- a/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/silence_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "item.minecraft.silence_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:silence_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:silence_armor_trim_smithing_template", + "rarity": "epic", + "translation_key": "item.minecraft.silence_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json b/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json index c434f1a2..039334fc 100644 --- a/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/silverfish_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.silverfish_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:silverfish_spawn_egg", + "translation_key": "item.minecraft.silverfish_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json b/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json index e57c6636..a29285d6 100644 --- a/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/skeleton_horse_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.skeleton_horse_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:skeleton_horse_spawn_egg", + "translation_key": "item.minecraft.skeleton_horse_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skeleton_skull.json b/src/main/generated/data/minecraft/item/skeleton_skull.json index 291fc6cc..6e656c9b 100644 --- a/src/main/generated/data/minecraft/item/skeleton_skull.json +++ b/src/main/generated/data/minecraft/item/skeleton_skull.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.skeleton_skull" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:skeleton_skull", + "rarity": "uncommon", + "translation_key": "block.minecraft.skeleton_skull" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json b/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json index 3ac113f7..5abafb26 100644 --- a/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/skeleton_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.skeleton_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:skeleton_spawn_egg", + "translation_key": "item.minecraft.skeleton_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skull_banner_pattern.json b/src/main/generated/data/minecraft/item/skull_banner_pattern.json index 4dcda75e..25aa2e6f 100644 --- a/src/main/generated/data/minecraft/item/skull_banner_pattern.json +++ b/src/main/generated/data/minecraft/item/skull_banner_pattern.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.skull_banner_pattern" - }, - "components": { + "behavior": { "minecraft:banner_pattern": { "patterns": "minecraft:pattern_item/skull" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:skull_banner_pattern", + "rarity": "rare", + "translation_key": "item.minecraft.skull_banner_pattern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/skull_pottery_sherd.json b/src/main/generated/data/minecraft/item/skull_pottery_sherd.json index 8d3e0ac5..7f3bc197 100644 --- a/src/main/generated/data/minecraft/item/skull_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/skull_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.skull_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:skull" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:skull_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.skull_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/slime_ball.json b/src/main/generated/data/minecraft/item/slime_ball.json index a651565d..513fd0d1 100644 --- a/src/main/generated/data/minecraft/item/slime_ball.json +++ b/src/main/generated/data/minecraft/item/slime_ball.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.slime_ball" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:slime_ball", + "translation_key": "item.minecraft.slime_ball" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/slime_block.json b/src/main/generated/data/minecraft/item/slime_block.json index b3e22387..954967ae 100644 --- a/src/main/generated/data/minecraft/item/slime_block.json +++ b/src/main/generated/data/minecraft/item/slime_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.slime_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:slime_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:slime_block", + "translation_key": "block.minecraft.slime_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/slime_spawn_egg.json b/src/main/generated/data/minecraft/item/slime_spawn_egg.json index e8b88014..c371fef8 100644 --- a/src/main/generated/data/minecraft/item/slime_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/slime_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.slime_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:slime_spawn_egg", + "translation_key": "item.minecraft.slime_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/small_amethyst_bud.json b/src/main/generated/data/minecraft/item/small_amethyst_bud.json index 05d9a098..74bf7900 100644 --- a/src/main/generated/data/minecraft/item/small_amethyst_bud.json +++ b/src/main/generated/data/minecraft/item/small_amethyst_bud.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.small_amethyst_bud" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:small_amethyst_bud" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:small_amethyst_bud", + "translation_key": "block.minecraft.small_amethyst_bud" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/small_dripleaf.json b/src/main/generated/data/minecraft/item/small_dripleaf.json index c87a1bc3..21afd77c 100644 --- a/src/main/generated/data/minecraft/item/small_dripleaf.json +++ b/src/main/generated/data/minecraft/item/small_dripleaf.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.small_dripleaf" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:small_dripleaf" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:small_dripleaf", + "translation_key": "block.minecraft.small_dripleaf" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smithing_table.json b/src/main/generated/data/minecraft/item/smithing_table.json index 7a64f1c1..2dc4318f 100644 --- a/src/main/generated/data/minecraft/item/smithing_table.json +++ b/src/main/generated/data/minecraft/item/smithing_table.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.smithing_table" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smithing_table" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smithing_table", + "translation_key": "block.minecraft.smithing_table" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smoker.json b/src/main/generated/data/minecraft/item/smoker.json index 5f0c762a..58d8909f 100644 --- a/src/main/generated/data/minecraft/item/smoker.json +++ b/src/main/generated/data/minecraft/item/smoker.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smoker" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smoker" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smoker", + "translation_key": "block.minecraft.smoker" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_basalt.json b/src/main/generated/data/minecraft/item/smooth_basalt.json index cba65ab8..01333853 100644 --- a/src/main/generated/data/minecraft/item/smooth_basalt.json +++ b/src/main/generated/data/minecraft/item/smooth_basalt.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_basalt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_basalt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_basalt", + "translation_key": "block.minecraft.smooth_basalt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_quartz.json b/src/main/generated/data/minecraft/item/smooth_quartz.json index 0b6a4207..abeff09b 100644 --- a/src/main/generated/data/minecraft/item/smooth_quartz.json +++ b/src/main/generated/data/minecraft/item/smooth_quartz.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_quartz" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_quartz" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_quartz", + "translation_key": "block.minecraft.smooth_quartz" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_quartz_slab.json b/src/main/generated/data/minecraft/item/smooth_quartz_slab.json index 94e4914b..2d2531e4 100644 --- a/src/main/generated/data/minecraft/item/smooth_quartz_slab.json +++ b/src/main/generated/data/minecraft/item/smooth_quartz_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_quartz_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_quartz_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_quartz_slab", + "translation_key": "block.minecraft.smooth_quartz_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_quartz_stairs.json b/src/main/generated/data/minecraft/item/smooth_quartz_stairs.json index 27959689..437b6e1a 100644 --- a/src/main/generated/data/minecraft/item/smooth_quartz_stairs.json +++ b/src/main/generated/data/minecraft/item/smooth_quartz_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_quartz_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_quartz_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_quartz_stairs", + "translation_key": "block.minecraft.smooth_quartz_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_red_sandstone.json b/src/main/generated/data/minecraft/item/smooth_red_sandstone.json index 6491eb51..c97048ea 100644 --- a/src/main/generated/data/minecraft/item/smooth_red_sandstone.json +++ b/src/main/generated/data/minecraft/item/smooth_red_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_red_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_red_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_red_sandstone", + "translation_key": "block.minecraft.smooth_red_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_red_sandstone_slab.json b/src/main/generated/data/minecraft/item/smooth_red_sandstone_slab.json index ffcd0ee2..d4eeff1a 100644 --- a/src/main/generated/data/minecraft/item/smooth_red_sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/smooth_red_sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_red_sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_red_sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_red_sandstone_slab", + "translation_key": "block.minecraft.smooth_red_sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_red_sandstone_stairs.json b/src/main/generated/data/minecraft/item/smooth_red_sandstone_stairs.json index f4695d84..f44f3c3e 100644 --- a/src/main/generated/data/minecraft/item/smooth_red_sandstone_stairs.json +++ b/src/main/generated/data/minecraft/item/smooth_red_sandstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_red_sandstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_red_sandstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_red_sandstone_stairs", + "translation_key": "block.minecraft.smooth_red_sandstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_sandstone.json b/src/main/generated/data/minecraft/item/smooth_sandstone.json index 1e55c440..7088e99e 100644 --- a/src/main/generated/data/minecraft/item/smooth_sandstone.json +++ b/src/main/generated/data/minecraft/item/smooth_sandstone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_sandstone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_sandstone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_sandstone", + "translation_key": "block.minecraft.smooth_sandstone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_sandstone_slab.json b/src/main/generated/data/minecraft/item/smooth_sandstone_slab.json index 9a186e55..08bcdfff 100644 --- a/src/main/generated/data/minecraft/item/smooth_sandstone_slab.json +++ b/src/main/generated/data/minecraft/item/smooth_sandstone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_sandstone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_sandstone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_sandstone_slab", + "translation_key": "block.minecraft.smooth_sandstone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_sandstone_stairs.json b/src/main/generated/data/minecraft/item/smooth_sandstone_stairs.json index a4d7d6ad..e6e6bc11 100644 --- a/src/main/generated/data/minecraft/item/smooth_sandstone_stairs.json +++ b/src/main/generated/data/minecraft/item/smooth_sandstone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_sandstone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_sandstone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_sandstone_stairs", + "translation_key": "block.minecraft.smooth_sandstone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_stone.json b/src/main/generated/data/minecraft/item/smooth_stone.json index f3bc98e0..afd6a3b2 100644 --- a/src/main/generated/data/minecraft/item/smooth_stone.json +++ b/src/main/generated/data/minecraft/item/smooth_stone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_stone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_stone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_stone", + "translation_key": "block.minecraft.smooth_stone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/smooth_stone_slab.json b/src/main/generated/data/minecraft/item/smooth_stone_slab.json index 7a1a4f69..90ae8f7d 100644 --- a/src/main/generated/data/minecraft/item/smooth_stone_slab.json +++ b/src/main/generated/data/minecraft/item/smooth_stone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.smooth_stone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:smooth_stone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:smooth_stone_slab", + "translation_key": "block.minecraft.smooth_stone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sniffer_egg.json b/src/main/generated/data/minecraft/item/sniffer_egg.json index 3697af43..63d187c1 100644 --- a/src/main/generated/data/minecraft/item/sniffer_egg.json +++ b/src/main/generated/data/minecraft/item/sniffer_egg.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.sniffer_egg" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sniffer_egg" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sniffer_egg", + "rarity": "uncommon", + "translation_key": "block.minecraft.sniffer_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json b/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json index 58aab764..4568ef20 100644 --- a/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/sniffer_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.sniffer_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:sniffer_spawn_egg", + "translation_key": "item.minecraft.sniffer_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snort_pottery_sherd.json b/src/main/generated/data/minecraft/item/snort_pottery_sherd.json index 839eb2a4..7f543a22 100644 --- a/src/main/generated/data/minecraft/item/snort_pottery_sherd.json +++ b/src/main/generated/data/minecraft/item/snort_pottery_sherd.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.snort_pottery_sherd" - }, - "components": { + "behavior": { "minecraft:decorated_pot_pattern": { "pattern": "minecraft:snort" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:snort_pottery_sherd", + "rarity": "uncommon", + "translation_key": "item.minecraft.snort_pottery_sherd" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json index 6469961a..798daa88 100644 --- a/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/snout_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.snout_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:snout_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:snout_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.snout_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snow.json b/src/main/generated/data/minecraft/item/snow.json index eaf5c516..e76f3e0d 100644 --- a/src/main/generated/data/minecraft/item/snow.json +++ b/src/main/generated/data/minecraft/item/snow.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.snow" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:snow" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:snow", + "translation_key": "block.minecraft.snow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snow_block.json b/src/main/generated/data/minecraft/item/snow_block.json index 1f78356d..50ab609e 100644 --- a/src/main/generated/data/minecraft/item/snow_block.json +++ b/src/main/generated/data/minecraft/item/snow_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.snow_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:snow_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:snow_block", + "translation_key": "block.minecraft.snow_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json b/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json index 4f9c541a..bf77d06e 100644 --- a/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/snow_golem_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.snow_golem_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:snow_golem_spawn_egg", + "translation_key": "item.minecraft.snow_golem_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/snowball.json b/src/main/generated/data/minecraft/item/snowball.json index 0a9daa71..967d98e6 100644 --- a/src/main/generated/data/minecraft/item/snowball.json +++ b/src/main/generated/data/minecraft/item/snowball.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.snowball" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_projectile" }, @@ -16,5 +13,9 @@ "angle_offset": 0.0, "speed": 1.5 } + }, + "display": { + "model": "minecraft:snowball", + "translation_key": "item.minecraft.snowball" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/soul_campfire.json b/src/main/generated/data/minecraft/item/soul_campfire.json index 09bf5f59..61baffbd 100644 --- a/src/main/generated/data/minecraft/item/soul_campfire.json +++ b/src/main/generated/data/minecraft/item/soul_campfire.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.soul_campfire" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:soul_campfire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:soul_campfire", + "translation_key": "block.minecraft.soul_campfire" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/soul_lantern.json b/src/main/generated/data/minecraft/item/soul_lantern.json index 66bad39c..b8c4dd87 100644 --- a/src/main/generated/data/minecraft/item/soul_lantern.json +++ b/src/main/generated/data/minecraft/item/soul_lantern.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.soul_lantern" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:soul_lantern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:soul_lantern", + "translation_key": "block.minecraft.soul_lantern" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/soul_sand.json b/src/main/generated/data/minecraft/item/soul_sand.json index a33a08fe..1f474676 100644 --- a/src/main/generated/data/minecraft/item/soul_sand.json +++ b/src/main/generated/data/minecraft/item/soul_sand.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.soul_sand" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:soul_sand" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:soul_sand", + "translation_key": "block.minecraft.soul_sand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/soul_soil.json b/src/main/generated/data/minecraft/item/soul_soil.json index 2eebd0c8..f26e086c 100644 --- a/src/main/generated/data/minecraft/item/soul_soil.json +++ b/src/main/generated/data/minecraft/item/soul_soil.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.soul_soil" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:soul_soil" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:soul_soil", + "translation_key": "block.minecraft.soul_soil" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/soul_torch.json b/src/main/generated/data/minecraft/item/soul_torch.json index f5e7db78..5f0bce5a 100644 --- a/src/main/generated/data/minecraft/item/soul_torch.json +++ b/src/main/generated/data/minecraft/item/soul_torch.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.soul_torch" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:soul_torch", + "translation_key": "block.minecraft.soul_torch" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spawner.json b/src/main/generated/data/minecraft/item/spawner.json index cfa471e7..e9980c49 100644 --- a/src/main/generated/data/minecraft/item/spawner.json +++ b/src/main/generated/data/minecraft/item/spawner.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.spawner" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spawner" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spawner", + "translation_key": "block.minecraft.spawner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spectral_arrow.json b/src/main/generated/data/minecraft/item/spectral_arrow.json index 4c6bd815..fcfc8f8e 100644 --- a/src/main/generated/data/minecraft/item/spectral_arrow.json +++ b/src/main/generated/data/minecraft/item/spectral_arrow.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spectral_arrow" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_projectile" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spectral_arrow", + "translation_key": "item.minecraft.spectral_arrow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spider_eye.json b/src/main/generated/data/minecraft/item/spider_eye.json index 8e14e2c6..ce1c6ccf 100644 --- a/src/main/generated/data/minecraft/item/spider_eye.json +++ b/src/main/generated/data/minecraft/item/spider_eye.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spider_eye" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 2, @@ -17,6 +14,10 @@ } } }, + "display": { + "model": "minecraft:spider_eye", + "translation_key": "item.minecraft.spider_eye" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/spider_spawn_egg.json b/src/main/generated/data/minecraft/item/spider_spawn_egg.json index 106bcfca..79d888b9 100644 --- a/src/main/generated/data/minecraft/item/spider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/spider_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spider_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:spider_spawn_egg", + "translation_key": "item.minecraft.spider_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json index 330111a5..ca61d85e 100644 --- a/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/spire_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.spire_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:spire_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spire_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.spire_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/splash_potion.json b/src/main/generated/data/minecraft/item/splash_potion.json index 59c33786..aa7071bb 100644 --- a/src/main/generated/data/minecraft/item/splash_potion.json +++ b/src/main/generated/data/minecraft/item/splash_potion.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.splash_potion" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_bottle" }, @@ -24,5 +21,9 @@ "type": "minecraft:potion" } } + }, + "display": { + "model": "minecraft:splash_potion", + "translation_key": "item.minecraft.splash_potion" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sponge.json b/src/main/generated/data/minecraft/item/sponge.json index 64ef234e..817b6247 100644 --- a/src/main/generated/data/minecraft/item/sponge.json +++ b/src/main/generated/data/minecraft/item/sponge.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sponge" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sponge" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sponge", + "translation_key": "block.minecraft.sponge" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spore_blossom.json b/src/main/generated/data/minecraft/item/spore_blossom.json index 12635e9e..2bc1e65a 100644 --- a/src/main/generated/data/minecraft/item/spore_blossom.json +++ b/src/main/generated/data/minecraft/item/spore_blossom.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spore_blossom" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spore_blossom" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spore_blossom", + "translation_key": "block.minecraft.spore_blossom" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_boat.json b/src/main/generated/data/minecraft/item/spruce_boat.json index 91a9364b..03fa2a49 100644 --- a/src/main/generated/data/minecraft/item/spruce_boat.json +++ b/src/main/generated/data/minecraft/item/spruce_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spruce_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:spruce_boat", + "translation_key": "item.minecraft.spruce_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_button.json b/src/main/generated/data/minecraft/item/spruce_button.json index b0005370..bb9a982a 100644 --- a/src/main/generated/data/minecraft/item/spruce_button.json +++ b/src/main/generated/data/minecraft/item/spruce_button.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_button" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_button", + "translation_key": "block.minecraft.spruce_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_chest_boat.json b/src/main/generated/data/minecraft/item/spruce_chest_boat.json index 3dc70f9f..7824c8f7 100644 --- a/src/main/generated/data/minecraft/item/spruce_chest_boat.json +++ b/src/main/generated/data/minecraft/item/spruce_chest_boat.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spruce_chest_boat" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -16,5 +13,9 @@ "ticks": 1200 }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:spruce_chest_boat", + "translation_key": "item.minecraft.spruce_chest_boat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_door.json b/src/main/generated/data/minecraft/item/spruce_door.json index 6393771f..f00c501e 100644 --- a/src/main/generated/data/minecraft/item/spruce_door.json +++ b/src/main/generated/data/minecraft/item/spruce_door.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_door" }, @@ -10,5 +7,9 @@ "ticks": 200 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_door", + "translation_key": "block.minecraft.spruce_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_fence.json b/src/main/generated/data/minecraft/item/spruce_fence.json index bbae39fa..73ffb9b1 100644 --- a/src/main/generated/data/minecraft/item/spruce_fence.json +++ b/src/main/generated/data/minecraft/item/spruce_fence.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_fence" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_fence", + "translation_key": "block.minecraft.spruce_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_fence_gate.json b/src/main/generated/data/minecraft/item/spruce_fence_gate.json index 8a982810..f291929e 100644 --- a/src/main/generated/data/minecraft/item/spruce_fence_gate.json +++ b/src/main/generated/data/minecraft/item/spruce_fence_gate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_fence_gate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_fence_gate", + "translation_key": "block.minecraft.spruce_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_hanging_sign.json b/src/main/generated/data/minecraft/item/spruce_hanging_sign.json index 9a5deee7..0a8ced48 100644 --- a/src/main/generated/data/minecraft/item/spruce_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/spruce_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 800 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:spruce_hanging_sign", + "translation_key": "block.minecraft.spruce_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_leaves.json b/src/main/generated/data/minecraft/item/spruce_leaves.json index 65e47e49..9735b621 100644 --- a/src/main/generated/data/minecraft/item/spruce_leaves.json +++ b/src/main/generated/data/minecraft/item/spruce_leaves.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_leaves" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_leaves" }, @@ -16,5 +13,9 @@ "color": -10380959 } } + }, + "display": { + "model": "minecraft:spruce_leaves", + "translation_key": "block.minecraft.spruce_leaves" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_log.json b/src/main/generated/data/minecraft/item/spruce_log.json index e0556dc4..5dd8a6e9 100644 --- a/src/main/generated/data/minecraft/item/spruce_log.json +++ b/src/main/generated/data/minecraft/item/spruce_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_log", + "translation_key": "block.minecraft.spruce_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_planks.json b/src/main/generated/data/minecraft/item/spruce_planks.json index 8f97967a..d8538e4b 100644 --- a/src/main/generated/data/minecraft/item/spruce_planks.json +++ b/src/main/generated/data/minecraft/item/spruce_planks.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_planks" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_planks", + "translation_key": "block.minecraft.spruce_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_pressure_plate.json b/src/main/generated/data/minecraft/item/spruce_pressure_plate.json index bc227696..799058c1 100644 --- a/src/main/generated/data/minecraft/item/spruce_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/spruce_pressure_plate.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_pressure_plate" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_pressure_plate", + "translation_key": "block.minecraft.spruce_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_sapling.json b/src/main/generated/data/minecraft/item/spruce_sapling.json index ee5d6bb3..6281e809 100644 --- a/src/main/generated/data/minecraft/item/spruce_sapling.json +++ b/src/main/generated/data/minecraft/item/spruce_sapling.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_sapling" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_sapling" }, @@ -14,6 +11,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:spruce_sapling", + "translation_key": "block.minecraft.spruce_sapling" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/spruce_sign.json b/src/main/generated/data/minecraft/item/spruce_sign.json index 5f7ac032..ed3d1477 100644 --- a/src/main/generated/data/minecraft/item/spruce_sign.json +++ b/src/main/generated/data/minecraft/item/spruce_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -15,5 +12,9 @@ "ticks": 200 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:spruce_sign", + "translation_key": "block.minecraft.spruce_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_slab.json b/src/main/generated/data/minecraft/item/spruce_slab.json index fb2bd241..4053d9a0 100644 --- a/src/main/generated/data/minecraft/item/spruce_slab.json +++ b/src/main/generated/data/minecraft/item/spruce_slab.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_slab" }, @@ -10,5 +7,9 @@ "ticks": 150 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_slab", + "translation_key": "block.minecraft.spruce_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_stairs.json b/src/main/generated/data/minecraft/item/spruce_stairs.json index fcfddfe4..6f6ecc4d 100644 --- a/src/main/generated/data/minecraft/item/spruce_stairs.json +++ b/src/main/generated/data/minecraft/item/spruce_stairs.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_stairs" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_stairs", + "translation_key": "block.minecraft.spruce_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_trapdoor.json b/src/main/generated/data/minecraft/item/spruce_trapdoor.json index 3f6222e3..3b56df16 100644 --- a/src/main/generated/data/minecraft/item/spruce_trapdoor.json +++ b/src/main/generated/data/minecraft/item/spruce_trapdoor.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_trapdoor" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_trapdoor", + "translation_key": "block.minecraft.spruce_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spruce_wood.json b/src/main/generated/data/minecraft/item/spruce_wood.json index 84c1054d..05dfcc92 100644 --- a/src/main/generated/data/minecraft/item/spruce_wood.json +++ b/src/main/generated/data/minecraft/item/spruce_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.spruce_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:spruce_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:spruce_wood", + "translation_key": "block.minecraft.spruce_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/spyglass.json b/src/main/generated/data/minecraft/item/spyglass.json index 7853451e..d9f22db6 100644 --- a/src/main/generated/data/minecraft/item/spyglass.json +++ b/src/main/generated/data/minecraft/item/spyglass.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.spyglass" - }, - "components": { + "behavior": { "minecraft:stackable": 1, "minecraft:useable": { "animation": "spyglass", @@ -16,5 +13,9 @@ "start_using_sound": "minecraft:item.spyglass.use", "stop_using_sound": "minecraft:item.spyglass.stop_using" } + }, + "display": { + "model": "minecraft:spyglass", + "translation_key": "item.minecraft.spyglass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/squid_spawn_egg.json b/src/main/generated/data/minecraft/item/squid_spawn_egg.json index 9d2ca3d3..4a593b06 100644 --- a/src/main/generated/data/minecraft/item/squid_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/squid_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.squid_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:squid_spawn_egg", + "translation_key": "item.minecraft.squid_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stick.json b/src/main/generated/data/minecraft/item/stick.json index efca2a84..d8b6d216 100644 --- a/src/main/generated/data/minecraft/item/stick.json +++ b/src/main/generated/data/minecraft/item/stick.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.stick" - }, - "components": { + "behavior": { "minecraft:fuel": { "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stick", + "translation_key": "item.minecraft.stick" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sticky_piston.json b/src/main/generated/data/minecraft/item/sticky_piston.json index ad52d754..3219535d 100644 --- a/src/main/generated/data/minecraft/item/sticky_piston.json +++ b/src/main/generated/data/minecraft/item/sticky_piston.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.sticky_piston" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sticky_piston" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sticky_piston", + "translation_key": "block.minecraft.sticky_piston" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone.json b/src/main/generated/data/minecraft/item/stone.json index ca151e17..f4303814 100644 --- a/src/main/generated/data/minecraft/item/stone.json +++ b/src/main/generated/data/minecraft/item/stone.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone", + "translation_key": "block.minecraft.stone" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_axe.json b/src/main/generated/data/minecraft/item/stone_axe.json index 9b129712..9c0ca595 100644 --- a/src/main/generated/data/minecraft/item/stone_axe.json +++ b/src/main/generated/data/minecraft/item/stone_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stone_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 131 }, @@ -34,5 +31,9 @@ "attack_speed": 0.2, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:stone_axe", + "translation_key": "item.minecraft.stone_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_brick_slab.json b/src/main/generated/data/minecraft/item/stone_brick_slab.json index 2ebceb73..4d58c6ce 100644 --- a/src/main/generated/data/minecraft/item/stone_brick_slab.json +++ b/src/main/generated/data/minecraft/item/stone_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_brick_slab", + "translation_key": "block.minecraft.stone_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_brick_stairs.json b/src/main/generated/data/minecraft/item/stone_brick_stairs.json index 955e7149..6a5c770e 100644 --- a/src/main/generated/data/minecraft/item/stone_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/stone_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_brick_stairs", + "translation_key": "block.minecraft.stone_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_brick_wall.json b/src/main/generated/data/minecraft/item/stone_brick_wall.json index 90576940..ebad5c37 100644 --- a/src/main/generated/data/minecraft/item/stone_brick_wall.json +++ b/src/main/generated/data/minecraft/item/stone_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_brick_wall", + "translation_key": "block.minecraft.stone_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_bricks.json b/src/main/generated/data/minecraft/item/stone_bricks.json index 1e44c4b4..8ca1cdae 100644 --- a/src/main/generated/data/minecraft/item/stone_bricks.json +++ b/src/main/generated/data/minecraft/item/stone_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_bricks", + "translation_key": "block.minecraft.stone_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_button.json b/src/main/generated/data/minecraft/item/stone_button.json index a20fbb68..bd2808be 100644 --- a/src/main/generated/data/minecraft/item/stone_button.json +++ b/src/main/generated/data/minecraft/item/stone_button.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_button" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_button", + "translation_key": "block.minecraft.stone_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_hoe.json b/src/main/generated/data/minecraft/item/stone_hoe.json index 7b836f8d..6a3916bc 100644 --- a/src/main/generated/data/minecraft/item/stone_hoe.json +++ b/src/main/generated/data/minecraft/item/stone_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stone_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 131 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:stone_hoe", + "translation_key": "item.minecraft.stone_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/stone_pickaxe.json b/src/main/generated/data/minecraft/item/stone_pickaxe.json index f1dbf27c..1387786d 100644 --- a/src/main/generated/data/minecraft/item/stone_pickaxe.json +++ b/src/main/generated/data/minecraft/item/stone_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stone_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 131 }, @@ -34,5 +31,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:stone_pickaxe", + "translation_key": "item.minecraft.stone_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_pressure_plate.json b/src/main/generated/data/minecraft/item/stone_pressure_plate.json index 43e3b15b..35baaa8b 100644 --- a/src/main/generated/data/minecraft/item/stone_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/stone_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_pressure_plate", + "translation_key": "block.minecraft.stone_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_shovel.json b/src/main/generated/data/minecraft/item/stone_shovel.json index 5ea078e0..2120a114 100644 --- a/src/main/generated/data/minecraft/item/stone_shovel.json +++ b/src/main/generated/data/minecraft/item/stone_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stone_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 131 }, @@ -35,6 +32,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:stone_shovel", + "translation_key": "item.minecraft.stone_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/stone_slab.json b/src/main/generated/data/minecraft/item/stone_slab.json index 41b32f18..7fe05c9f 100644 --- a/src/main/generated/data/minecraft/item/stone_slab.json +++ b/src/main/generated/data/minecraft/item/stone_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_slab", + "translation_key": "block.minecraft.stone_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_stairs.json b/src/main/generated/data/minecraft/item/stone_stairs.json index 7138e509..2a6cc76d 100644 --- a/src/main/generated/data/minecraft/item/stone_stairs.json +++ b/src/main/generated/data/minecraft/item/stone_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stone_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stone_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stone_stairs", + "translation_key": "block.minecraft.stone_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stone_sword.json b/src/main/generated/data/minecraft/item/stone_sword.json index a9ade236..250f6465 100644 --- a/src/main/generated/data/minecraft/item/stone_sword.json +++ b/src/main/generated/data/minecraft/item/stone_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stone_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 131 }, @@ -34,5 +31,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:stone_sword", + "translation_key": "item.minecraft.stone_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stonecutter.json b/src/main/generated/data/minecraft/item/stonecutter.json index ff936cca..c2e2a1c5 100644 --- a/src/main/generated/data/minecraft/item/stonecutter.json +++ b/src/main/generated/data/minecraft/item/stonecutter.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stonecutter" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stonecutter" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stonecutter", + "translation_key": "block.minecraft.stonecutter" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stray_spawn_egg.json b/src/main/generated/data/minecraft/item/stray_spawn_egg.json index 18773366..f2c798de 100644 --- a/src/main/generated/data/minecraft/item/stray_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/stray_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.stray_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:stray_spawn_egg", + "translation_key": "item.minecraft.stray_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/strider_spawn_egg.json b/src/main/generated/data/minecraft/item/strider_spawn_egg.json index 2af53c57..55098658 100644 --- a/src/main/generated/data/minecraft/item/strider_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/strider_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.strider_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:strider_spawn_egg", + "translation_key": "item.minecraft.strider_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/string.json b/src/main/generated/data/minecraft/item/string.json index 17052cc1..5f61bf57 100644 --- a/src/main/generated/data/minecraft/item/string.json +++ b/src/main/generated/data/minecraft/item/string.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.string" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tripwire" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:string", + "translation_key": "item.minecraft.string" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_acacia_log.json b/src/main/generated/data/minecraft/item/stripped_acacia_log.json index dca316b5..f19cf952 100644 --- a/src/main/generated/data/minecraft/item/stripped_acacia_log.json +++ b/src/main/generated/data/minecraft/item/stripped_acacia_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_acacia_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_acacia_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_acacia_log", + "translation_key": "block.minecraft.stripped_acacia_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_acacia_wood.json b/src/main/generated/data/minecraft/item/stripped_acacia_wood.json index 0505fd21..091fd627 100644 --- a/src/main/generated/data/minecraft/item/stripped_acacia_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_acacia_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_acacia_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_acacia_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_acacia_wood", + "translation_key": "block.minecraft.stripped_acacia_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_bamboo_block.json b/src/main/generated/data/minecraft/item/stripped_bamboo_block.json index efa26c3c..226afd49 100644 --- a/src/main/generated/data/minecraft/item/stripped_bamboo_block.json +++ b/src/main/generated/data/minecraft/item/stripped_bamboo_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_bamboo_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_bamboo_block" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_bamboo_block", + "translation_key": "block.minecraft.stripped_bamboo_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_birch_log.json b/src/main/generated/data/minecraft/item/stripped_birch_log.json index b1ddf0f2..43267ac2 100644 --- a/src/main/generated/data/minecraft/item/stripped_birch_log.json +++ b/src/main/generated/data/minecraft/item/stripped_birch_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_birch_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_birch_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_birch_log", + "translation_key": "block.minecraft.stripped_birch_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_birch_wood.json b/src/main/generated/data/minecraft/item/stripped_birch_wood.json index 281f1f8f..a3bb107f 100644 --- a/src/main/generated/data/minecraft/item/stripped_birch_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_birch_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_birch_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_birch_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_birch_wood", + "translation_key": "block.minecraft.stripped_birch_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_cherry_log.json b/src/main/generated/data/minecraft/item/stripped_cherry_log.json index 4e6e6cfd..a8c8eca8 100644 --- a/src/main/generated/data/minecraft/item/stripped_cherry_log.json +++ b/src/main/generated/data/minecraft/item/stripped_cherry_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_cherry_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_cherry_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_cherry_log", + "translation_key": "block.minecraft.stripped_cherry_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_cherry_wood.json b/src/main/generated/data/minecraft/item/stripped_cherry_wood.json index 39f7fcc3..82848a25 100644 --- a/src/main/generated/data/minecraft/item/stripped_cherry_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_cherry_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_cherry_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_cherry_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_cherry_wood", + "translation_key": "block.minecraft.stripped_cherry_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_crimson_hyphae.json b/src/main/generated/data/minecraft/item/stripped_crimson_hyphae.json index 6c1861c7..4468a57e 100644 --- a/src/main/generated/data/minecraft/item/stripped_crimson_hyphae.json +++ b/src/main/generated/data/minecraft/item/stripped_crimson_hyphae.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stripped_crimson_hyphae" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_crimson_hyphae" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_crimson_hyphae", + "translation_key": "block.minecraft.stripped_crimson_hyphae" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_crimson_stem.json b/src/main/generated/data/minecraft/item/stripped_crimson_stem.json index b8d755a6..48647036 100644 --- a/src/main/generated/data/minecraft/item/stripped_crimson_stem.json +++ b/src/main/generated/data/minecraft/item/stripped_crimson_stem.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stripped_crimson_stem" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_crimson_stem" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_crimson_stem", + "translation_key": "block.minecraft.stripped_crimson_stem" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_dark_oak_log.json b/src/main/generated/data/minecraft/item/stripped_dark_oak_log.json index 7d6f8860..c122207e 100644 --- a/src/main/generated/data/minecraft/item/stripped_dark_oak_log.json +++ b/src/main/generated/data/minecraft/item/stripped_dark_oak_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_dark_oak_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_dark_oak_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_dark_oak_log", + "translation_key": "block.minecraft.stripped_dark_oak_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_dark_oak_wood.json b/src/main/generated/data/minecraft/item/stripped_dark_oak_wood.json index 04c362c6..f9411ed1 100644 --- a/src/main/generated/data/minecraft/item/stripped_dark_oak_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_dark_oak_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_dark_oak_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_dark_oak_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_dark_oak_wood", + "translation_key": "block.minecraft.stripped_dark_oak_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_jungle_log.json b/src/main/generated/data/minecraft/item/stripped_jungle_log.json index e6434a7a..da146d72 100644 --- a/src/main/generated/data/minecraft/item/stripped_jungle_log.json +++ b/src/main/generated/data/minecraft/item/stripped_jungle_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_jungle_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_jungle_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_jungle_log", + "translation_key": "block.minecraft.stripped_jungle_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_jungle_wood.json b/src/main/generated/data/minecraft/item/stripped_jungle_wood.json index 9db1347e..e13f9c1d 100644 --- a/src/main/generated/data/minecraft/item/stripped_jungle_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_jungle_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_jungle_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_jungle_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_jungle_wood", + "translation_key": "block.minecraft.stripped_jungle_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_mangrove_log.json b/src/main/generated/data/minecraft/item/stripped_mangrove_log.json index 0841950b..d0271217 100644 --- a/src/main/generated/data/minecraft/item/stripped_mangrove_log.json +++ b/src/main/generated/data/minecraft/item/stripped_mangrove_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_mangrove_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_mangrove_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_mangrove_log", + "translation_key": "block.minecraft.stripped_mangrove_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_mangrove_wood.json b/src/main/generated/data/minecraft/item/stripped_mangrove_wood.json index a295fa3c..0903aafb 100644 --- a/src/main/generated/data/minecraft/item/stripped_mangrove_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_mangrove_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_mangrove_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_mangrove_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_mangrove_wood", + "translation_key": "block.minecraft.stripped_mangrove_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_oak_log.json b/src/main/generated/data/minecraft/item/stripped_oak_log.json index a7ec60b7..60c65ed1 100644 --- a/src/main/generated/data/minecraft/item/stripped_oak_log.json +++ b/src/main/generated/data/minecraft/item/stripped_oak_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_oak_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_oak_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_oak_log", + "translation_key": "block.minecraft.stripped_oak_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_oak_wood.json b/src/main/generated/data/minecraft/item/stripped_oak_wood.json index 4bcd975d..a602f68d 100644 --- a/src/main/generated/data/minecraft/item/stripped_oak_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_oak_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_oak_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_oak_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_oak_wood", + "translation_key": "block.minecraft.stripped_oak_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_spruce_log.json b/src/main/generated/data/minecraft/item/stripped_spruce_log.json index 704c662a..604ffc15 100644 --- a/src/main/generated/data/minecraft/item/stripped_spruce_log.json +++ b/src/main/generated/data/minecraft/item/stripped_spruce_log.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_spruce_log" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_spruce_log" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_spruce_log", + "translation_key": "block.minecraft.stripped_spruce_log" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_spruce_wood.json b/src/main/generated/data/minecraft/item/stripped_spruce_wood.json index a53099e7..b3c7964e 100644 --- a/src/main/generated/data/minecraft/item/stripped_spruce_wood.json +++ b/src/main/generated/data/minecraft/item/stripped_spruce_wood.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.stripped_spruce_wood" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_spruce_wood" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_spruce_wood", + "translation_key": "block.minecraft.stripped_spruce_wood" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_warped_hyphae.json b/src/main/generated/data/minecraft/item/stripped_warped_hyphae.json index 4c014551..aefffa22 100644 --- a/src/main/generated/data/minecraft/item/stripped_warped_hyphae.json +++ b/src/main/generated/data/minecraft/item/stripped_warped_hyphae.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stripped_warped_hyphae" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_warped_hyphae" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_warped_hyphae", + "translation_key": "block.minecraft.stripped_warped_hyphae" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/stripped_warped_stem.json b/src/main/generated/data/minecraft/item/stripped_warped_stem.json index c812c6d6..2ca9a26b 100644 --- a/src/main/generated/data/minecraft/item/stripped_warped_stem.json +++ b/src/main/generated/data/minecraft/item/stripped_warped_stem.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.stripped_warped_stem" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:stripped_warped_stem" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:stripped_warped_stem", + "translation_key": "block.minecraft.stripped_warped_stem" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/structure_block.json b/src/main/generated/data/minecraft/item/structure_block.json index c5f8fb9c..8dfe887c 100644 --- a/src/main/generated/data/minecraft/item/structure_block.json +++ b/src/main/generated/data/minecraft/item/structure_block.json @@ -1,13 +1,14 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.structure_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:structure_block", "operator_only": true }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:structure_block", + "rarity": "epic", + "translation_key": "block.minecraft.structure_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/structure_void.json b/src/main/generated/data/minecraft/item/structure_void.json index 27ea8bc4..631445aa 100644 --- a/src/main/generated/data/minecraft/item/structure_void.json +++ b/src/main/generated/data/minecraft/item/structure_void.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "epic", - "translation_key": "block.minecraft.structure_void" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:structure_void" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:structure_void", + "rarity": "epic", + "translation_key": "block.minecraft.structure_void" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sugar.json b/src/main/generated/data/minecraft/item/sugar.json index 9c23e925..7a243ff6 100644 --- a/src/main/generated/data/minecraft/item/sugar.json +++ b/src/main/generated/data/minecraft/item/sugar.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.sugar" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sugar", + "translation_key": "item.minecraft.sugar" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sugar_cane.json b/src/main/generated/data/minecraft/item/sugar_cane.json index 0e05bfee..c5c07689 100644 --- a/src/main/generated/data/minecraft/item/sugar_cane.json +++ b/src/main/generated/data/minecraft/item/sugar_cane.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.sugar_cane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sugar_cane" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sugar_cane", + "translation_key": "block.minecraft.sugar_cane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/sunflower.json b/src/main/generated/data/minecraft/item/sunflower.json index 236d57ad..00e043ce 100644 --- a/src/main/generated/data/minecraft/item/sunflower.json +++ b/src/main/generated/data/minecraft/item/sunflower.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.sunflower" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sunflower" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:sunflower", + "translation_key": "block.minecraft.sunflower" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/suspicious_gravel.json b/src/main/generated/data/minecraft/item/suspicious_gravel.json index e1722eeb..708dc0ef 100644 --- a/src/main/generated/data/minecraft/item/suspicious_gravel.json +++ b/src/main/generated/data/minecraft/item/suspicious_gravel.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.suspicious_gravel" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:suspicious_gravel" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:suspicious_gravel", + "translation_key": "block.minecraft.suspicious_gravel" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/suspicious_sand.json b/src/main/generated/data/minecraft/item/suspicious_sand.json index 82cff134..1988c955 100644 --- a/src/main/generated/data/minecraft/item/suspicious_sand.json +++ b/src/main/generated/data/minecraft/item/suspicious_sand.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.suspicious_sand" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:suspicious_sand" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:suspicious_sand", + "translation_key": "block.minecraft.suspicious_sand" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/suspicious_stew.json b/src/main/generated/data/minecraft/item/suspicious_stew.json index a1dddcfa..1dabcce5 100644 --- a/src/main/generated/data/minecraft/item/suspicious_stew.json +++ b/src/main/generated/data/minecraft/item/suspicious_stew.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.suspicious_stew" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "always_edible": true, @@ -22,6 +19,10 @@ } } }, + "display": { + "model": "minecraft:suspicious_stew", + "translation_key": "item.minecraft.suspicious_stew" + }, "events": { "minecraft:consume_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/sweet_berries.json b/src/main/generated/data/minecraft/item/sweet_berries.json index 1e0199db..49f965b0 100644 --- a/src/main/generated/data/minecraft/item/sweet_berries.json +++ b/src/main/generated/data/minecraft/item/sweet_berries.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.sweet_berries" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:sweet_berry_bush" }, @@ -22,5 +19,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:sweet_berries", + "translation_key": "item.minecraft.sweet_berries" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tadpole_bucket.json b/src/main/generated/data/minecraft/item/tadpole_bucket.json index f646a503..fa2a1066 100644 --- a/src/main/generated/data/minecraft/item/tadpole_bucket.json +++ b/src/main/generated/data/minecraft/item/tadpole_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tadpole_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_tadpole", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:tadpole_bucket", + "translation_key": "item.minecraft.tadpole_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json b/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json index ec238103..1bbdf196 100644 --- a/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/tadpole_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tadpole_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:tadpole_spawn_egg", + "translation_key": "item.minecraft.tadpole_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tall_grass.json b/src/main/generated/data/minecraft/item/tall_grass.json index 543e716d..0c67ebe3 100644 --- a/src/main/generated/data/minecraft/item/tall_grass.json +++ b/src/main/generated/data/minecraft/item/tall_grass.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.tall_grass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tall_grass" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:tall_grass", + "translation_key": "block.minecraft.tall_grass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/target.json b/src/main/generated/data/minecraft/item/target.json index 45b540c9..ab7c9099 100644 --- a/src/main/generated/data/minecraft/item/target.json +++ b/src/main/generated/data/minecraft/item/target.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.target" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:target" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:target", + "translation_key": "block.minecraft.target" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/terracotta.json b/src/main/generated/data/minecraft/item/terracotta.json index 66748ac6..8f0fa707 100644 --- a/src/main/generated/data/minecraft/item/terracotta.json +++ b/src/main/generated/data/minecraft/item/terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:terracotta", + "translation_key": "block.minecraft.terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json index 96f4b747..27eb4824 100644 --- a/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/tide_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.tide_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:tide_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tide_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.tide_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tinted_glass.json b/src/main/generated/data/minecraft/item/tinted_glass.json index a1ace88a..3ecdd524 100644 --- a/src/main/generated/data/minecraft/item/tinted_glass.json +++ b/src/main/generated/data/minecraft/item/tinted_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tinted_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tinted_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tinted_glass", + "translation_key": "block.minecraft.tinted_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tipped_arrow.json b/src/main/generated/data/minecraft/item/tipped_arrow.json index 3794b4d9..6324b12e 100644 --- a/src/main/generated/data/minecraft/item/tipped_arrow.json +++ b/src/main/generated/data/minecraft/item/tipped_arrow.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tipped_arrow" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:shoot_projectile" }, @@ -20,5 +17,9 @@ "type": "minecraft:potion" } } + }, + "display": { + "model": "minecraft:tipped_arrow", + "translation_key": "item.minecraft.tipped_arrow" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tnt.json b/src/main/generated/data/minecraft/item/tnt.json index b72cbbb1..e174dbbe 100644 --- a/src/main/generated/data/minecraft/item/tnt.json +++ b/src/main/generated/data/minecraft/item/tnt.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.tnt" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tnt" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:spawn_tnt" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tnt", + "translation_key": "block.minecraft.tnt" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tnt_minecart.json b/src/main/generated/data/minecraft/item/tnt_minecart.json index 64afcf2c..f5e20edb 100644 --- a/src/main/generated/data/minecraft/item/tnt_minecart.json +++ b/src/main/generated/data/minecraft/item/tnt_minecart.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tnt_minecart" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:tnt_minecart", + "translation_key": "item.minecraft.tnt_minecart" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/torch.json b/src/main/generated/data/minecraft/item/torch.json index b59fbe49..9022372e 100644 --- a/src/main/generated/data/minecraft/item/torch.json +++ b/src/main/generated/data/minecraft/item/torch.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.torch" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:torch", + "translation_key": "block.minecraft.torch" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/torchflower.json b/src/main/generated/data/minecraft/item/torchflower.json index 9a2949ff..1f55212f 100644 --- a/src/main/generated/data/minecraft/item/torchflower.json +++ b/src/main/generated/data/minecraft/item/torchflower.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.torchflower" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:torchflower" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:torchflower", + "translation_key": "block.minecraft.torchflower" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/torchflower_seeds.json b/src/main/generated/data/minecraft/item/torchflower_seeds.json index 0df94ceb..abfa1f0f 100644 --- a/src/main/generated/data/minecraft/item/torchflower_seeds.json +++ b/src/main/generated/data/minecraft/item/torchflower_seeds.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.torchflower_seeds" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:torchflower_crop" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:torchflower_seeds", + "translation_key": "item.minecraft.torchflower_seeds" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/totem_of_undying.json b/src/main/generated/data/minecraft/item/totem_of_undying.json index 65a51aa2..8fbc1d5c 100644 --- a/src/main/generated/data/minecraft/item/totem_of_undying.json +++ b/src/main/generated/data/minecraft/item/totem_of_undying.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.totem_of_undying" - }, - "components": { + "behavior": { "minecraft:life_saving": { "effects": [ { @@ -26,5 +22,10 @@ ] }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:totem_of_undying", + "rarity": "uncommon", + "translation_key": "item.minecraft.totem_of_undying" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json b/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json index b9b0d454..526d539a 100644 --- a/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/trader_llama_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.trader_llama_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:trader_llama_spawn_egg", + "translation_key": "item.minecraft.trader_llama_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trapped_chest.json b/src/main/generated/data/minecraft/item/trapped_chest.json index d1740b2e..46cf08a4 100644 --- a/src/main/generated/data/minecraft/item/trapped_chest.json +++ b/src/main/generated/data/minecraft/item/trapped_chest.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.trapped_chest" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:trapped_chest" }, @@ -10,5 +7,9 @@ "ticks": 300 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:trapped_chest", + "translation_key": "block.minecraft.trapped_chest" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trial_key.json b/src/main/generated/data/minecraft/item/trial_key.json index c20cbd5a..8900a904 100644 --- a/src/main/generated/data/minecraft/item/trial_key.json +++ b/src/main/generated/data/minecraft/item/trial_key.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.trial_key" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:trial_key", + "translation_key": "item.minecraft.trial_key" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trial_spawner.json b/src/main/generated/data/minecraft/item/trial_spawner.json index 8327a51b..886a0703 100644 --- a/src/main/generated/data/minecraft/item/trial_spawner.json +++ b/src/main/generated/data/minecraft/item/trial_spawner.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.trial_spawner" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:trial_spawner" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:trial_spawner", + "translation_key": "block.minecraft.trial_spawner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/trident.json b/src/main/generated/data/minecraft/item/trident.json index f7300005..7976926e 100644 --- a/src/main/generated/data/minecraft/item/trident.json +++ b/src/main/generated/data/minecraft/item/trident.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "rare", - "translation_key": "item.minecraft.trident" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 250, "preserve_item": true @@ -43,6 +39,11 @@ "attack_speed": 0.275 } }, + "display": { + "model": "minecraft:trident", + "rarity": "rare", + "translation_key": "item.minecraft.trident" + }, "events": { "minecraft:stopped_using": { "action": { diff --git a/src/main/generated/data/minecraft/item/tripwire_hook.json b/src/main/generated/data/minecraft/item/tripwire_hook.json index 2de4dc21..16adbd63 100644 --- a/src/main/generated/data/minecraft/item/tripwire_hook.json +++ b/src/main/generated/data/minecraft/item/tripwire_hook.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tripwire_hook" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tripwire_hook" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tripwire_hook", + "translation_key": "block.minecraft.tripwire_hook" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tropical_fish.json b/src/main/generated/data/minecraft/item/tropical_fish.json index 7ba89053..e11de4d9 100644 --- a/src/main/generated/data/minecraft/item/tropical_fish.json +++ b/src/main/generated/data/minecraft/item/tropical_fish.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tropical_fish" - }, - "components": { + "behavior": { "minecraft:consumable": {}, "minecraft:food": { "nutrition": 1, @@ -16,5 +13,9 @@ "amount": 32 } } + }, + "display": { + "model": "minecraft:tropical_fish", + "translation_key": "item.minecraft.tropical_fish" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tropical_fish_bucket.json b/src/main/generated/data/minecraft/item/tropical_fish_bucket.json index fbcbeee0..8891bdf3 100644 --- a/src/main/generated/data/minecraft/item/tropical_fish_bucket.json +++ b/src/main/generated/data/minecraft/item/tropical_fish_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tropical_fish_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty_fish", "entity": { @@ -18,5 +15,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:tropical_fish_bucket", + "translation_key": "item.minecraft.tropical_fish_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json b/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json index afa394e2..fb701222 100644 --- a/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/tropical_fish_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.tropical_fish_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:tropical_fish_spawn_egg", + "translation_key": "item.minecraft.tropical_fish_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tube_coral.json b/src/main/generated/data/minecraft/item/tube_coral.json index 0c011182..1d4c863f 100644 --- a/src/main/generated/data/minecraft/item/tube_coral.json +++ b/src/main/generated/data/minecraft/item/tube_coral.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tube_coral" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tube_coral" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tube_coral", + "translation_key": "block.minecraft.tube_coral" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tube_coral_block.json b/src/main/generated/data/minecraft/item/tube_coral_block.json index c39a87a3..4ab3f33c 100644 --- a/src/main/generated/data/minecraft/item/tube_coral_block.json +++ b/src/main/generated/data/minecraft/item/tube_coral_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tube_coral_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tube_coral_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tube_coral_block", + "translation_key": "block.minecraft.tube_coral_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tube_coral_fan.json b/src/main/generated/data/minecraft/item/tube_coral_fan.json index 3ec5a1d0..e10674ec 100644 --- a/src/main/generated/data/minecraft/item/tube_coral_fan.json +++ b/src/main/generated/data/minecraft/item/tube_coral_fan.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.tube_coral_fan" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tube_coral_fan", + "translation_key": "block.minecraft.tube_coral_fan" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff.json b/src/main/generated/data/minecraft/item/tuff.json index 1556b1da..1cc4625b 100644 --- a/src/main/generated/data/minecraft/item/tuff.json +++ b/src/main/generated/data/minecraft/item/tuff.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff", + "translation_key": "block.minecraft.tuff" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_brick_slab.json b/src/main/generated/data/minecraft/item/tuff_brick_slab.json index c4e8f26a..b6fbfb5e 100644 --- a/src/main/generated/data/minecraft/item/tuff_brick_slab.json +++ b/src/main/generated/data/minecraft/item/tuff_brick_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_brick_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_brick_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_brick_slab", + "translation_key": "block.minecraft.tuff_brick_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_brick_stairs.json b/src/main/generated/data/minecraft/item/tuff_brick_stairs.json index 13845d08..bd4671d2 100644 --- a/src/main/generated/data/minecraft/item/tuff_brick_stairs.json +++ b/src/main/generated/data/minecraft/item/tuff_brick_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_brick_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_brick_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_brick_stairs", + "translation_key": "block.minecraft.tuff_brick_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_brick_wall.json b/src/main/generated/data/minecraft/item/tuff_brick_wall.json index 3572afe7..3194fc74 100644 --- a/src/main/generated/data/minecraft/item/tuff_brick_wall.json +++ b/src/main/generated/data/minecraft/item/tuff_brick_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_brick_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_brick_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_brick_wall", + "translation_key": "block.minecraft.tuff_brick_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_bricks.json b/src/main/generated/data/minecraft/item/tuff_bricks.json index 2725a959..214aefb2 100644 --- a/src/main/generated/data/minecraft/item/tuff_bricks.json +++ b/src/main/generated/data/minecraft/item/tuff_bricks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_bricks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_bricks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_bricks", + "translation_key": "block.minecraft.tuff_bricks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_slab.json b/src/main/generated/data/minecraft/item/tuff_slab.json index 8d2569dd..f08011e5 100644 --- a/src/main/generated/data/minecraft/item/tuff_slab.json +++ b/src/main/generated/data/minecraft/item/tuff_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_slab", + "translation_key": "block.minecraft.tuff_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_stairs.json b/src/main/generated/data/minecraft/item/tuff_stairs.json index de2990c3..6a188a36 100644 --- a/src/main/generated/data/minecraft/item/tuff_stairs.json +++ b/src/main/generated/data/minecraft/item/tuff_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_stairs", + "translation_key": "block.minecraft.tuff_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/tuff_wall.json b/src/main/generated/data/minecraft/item/tuff_wall.json index 6708577b..9254f8d4 100644 --- a/src/main/generated/data/minecraft/item/tuff_wall.json +++ b/src/main/generated/data/minecraft/item/tuff_wall.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.tuff_wall" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:tuff_wall" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:tuff_wall", + "translation_key": "block.minecraft.tuff_wall" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_egg.json b/src/main/generated/data/minecraft/item/turtle_egg.json index ec7b284d..f874feb3 100644 --- a/src/main/generated/data/minecraft/item/turtle_egg.json +++ b/src/main/generated/data/minecraft/item/turtle_egg.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.turtle_egg" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:turtle_egg" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:turtle_egg", + "translation_key": "block.minecraft.turtle_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_helmet.json b/src/main/generated/data/minecraft/item/turtle_helmet.json index 5306a97d..64fb99f7 100644 --- a/src/main/generated/data/minecraft/item/turtle_helmet.json +++ b/src/main/generated/data/minecraft/item/turtle_helmet.json @@ -1,10 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.turtle_helmet" - }, - "components": { + "behavior": { "minecraft:armor": { - "material": "minecraft:turtle" + "attribute_id": "minecraft:armor.helmet", + "defense": 2, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "durability": 275 @@ -17,6 +17,7 @@ }, "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_turtle", + "model": "minecraft:turtle_scute", "slot": "head", "swappable": true }, @@ -24,5 +25,9 @@ "items": "#minecraft:repairs_turtle_armor" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:turtle_helmet", + "translation_key": "item.minecraft.turtle_helmet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_scute.json b/src/main/generated/data/minecraft/item/turtle_scute.json index 63d47870..25e12f70 100644 --- a/src/main/generated/data/minecraft/item/turtle_scute.json +++ b/src/main/generated/data/minecraft/item/turtle_scute.json @@ -1,8 +1,9 @@ { - "base": { - "translation_key": "item.minecraft.turtle_scute" - }, - "components": { + "behavior": { "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:turtle_scute", + "translation_key": "item.minecraft.turtle_scute" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_spawn_egg.json b/src/main/generated/data/minecraft/item/turtle_spawn_egg.json index 0545648c..e89d77b5 100644 --- a/src/main/generated/data/minecraft/item/turtle_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/turtle_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.turtle_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:turtle_spawn_egg", + "translation_key": "item.minecraft.turtle_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/twisting_vines.json b/src/main/generated/data/minecraft/item/twisting_vines.json index a532a45c..d6f21d2f 100644 --- a/src/main/generated/data/minecraft/item/twisting_vines.json +++ b/src/main/generated/data/minecraft/item/twisting_vines.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.twisting_vines" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:twisting_vines" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:twisting_vines", + "translation_key": "block.minecraft.twisting_vines" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vault.json b/src/main/generated/data/minecraft/item/vault.json index c8b995d8..1b6f3dac 100644 --- a/src/main/generated/data/minecraft/item/vault.json +++ b/src/main/generated/data/minecraft/item/vault.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.vault" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:vault" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:vault", + "translation_key": "block.minecraft.vault" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/verdant_froglight.json b/src/main/generated/data/minecraft/item/verdant_froglight.json index 6d9c3b29..423c4ddb 100644 --- a/src/main/generated/data/minecraft/item/verdant_froglight.json +++ b/src/main/generated/data/minecraft/item/verdant_froglight.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.verdant_froglight" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:verdant_froglight" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:verdant_froglight", + "translation_key": "block.minecraft.verdant_froglight" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json index 820bccea..81937df6 100644 --- a/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/vex_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.vex_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:vex_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:vex_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.vex_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vex_spawn_egg.json b/src/main/generated/data/minecraft/item/vex_spawn_egg.json index 7e0b7c95..2fbf6bf1 100644 --- a/src/main/generated/data/minecraft/item/vex_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/vex_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.vex_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:vex_spawn_egg", + "translation_key": "item.minecraft.vex_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/villager_spawn_egg.json b/src/main/generated/data/minecraft/item/villager_spawn_egg.json index 44aad272..6bac3f0c 100644 --- a/src/main/generated/data/minecraft/item/villager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/villager_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.villager_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:villager_spawn_egg", + "translation_key": "item.minecraft.villager_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json b/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json index bbf61f3e..be56aa85 100644 --- a/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/vindicator_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.vindicator_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:vindicator_spawn_egg", + "translation_key": "item.minecraft.vindicator_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/vine.json b/src/main/generated/data/minecraft/item/vine.json index ee91b39c..bd435483 100644 --- a/src/main/generated/data/minecraft/item/vine.json +++ b/src/main/generated/data/minecraft/item/vine.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.vine" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:vine" }, @@ -16,5 +13,9 @@ "biome": "minecraft:plains" } } + }, + "display": { + "model": "minecraft:vine", + "translation_key": "block.minecraft.vine" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json b/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json index 3152f291..6cee902e 100644 --- a/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wandering_trader_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wandering_trader_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:wandering_trader_spawn_egg", + "translation_key": "item.minecraft.wandering_trader_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json index 81b59dd6..6f1473f2 100644 --- a/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/ward_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.ward_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:ward_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:ward_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.ward_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warden_spawn_egg.json b/src/main/generated/data/minecraft/item/warden_spawn_egg.json index 5a5f2ca3..00053d20 100644 --- a/src/main/generated/data/minecraft/item/warden_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/warden_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.warden_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:warden_spawn_egg", + "translation_key": "item.minecraft.warden_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_button.json b/src/main/generated/data/minecraft/item/warped_button.json index 8be23b4d..d3f8e8d6 100644 --- a/src/main/generated/data/minecraft/item/warped_button.json +++ b/src/main/generated/data/minecraft/item/warped_button.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_button" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_button" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_button", + "translation_key": "block.minecraft.warped_button" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_door.json b/src/main/generated/data/minecraft/item/warped_door.json index eaa4b6a4..5f10a1d8 100644 --- a/src/main/generated/data/minecraft/item/warped_door.json +++ b/src/main/generated/data/minecraft/item/warped_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_door", + "translation_key": "block.minecraft.warped_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_fence.json b/src/main/generated/data/minecraft/item/warped_fence.json index e16e4558..74edc2e9 100644 --- a/src/main/generated/data/minecraft/item/warped_fence.json +++ b/src/main/generated/data/minecraft/item/warped_fence.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_fence" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_fence" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_fence", + "translation_key": "block.minecraft.warped_fence" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_fence_gate.json b/src/main/generated/data/minecraft/item/warped_fence_gate.json index aa9cbc37..bbe50762 100644 --- a/src/main/generated/data/minecraft/item/warped_fence_gate.json +++ b/src/main/generated/data/minecraft/item/warped_fence_gate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_fence_gate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_fence_gate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_fence_gate", + "translation_key": "block.minecraft.warped_fence_gate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_fungus.json b/src/main/generated/data/minecraft/item/warped_fungus.json index 20d8c89a..940c7fdc 100644 --- a/src/main/generated/data/minecraft/item/warped_fungus.json +++ b/src/main/generated/data/minecraft/item/warped_fungus.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.warped_fungus" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_fungus" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:warped_fungus", + "translation_key": "block.minecraft.warped_fungus" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/warped_fungus_on_a_stick.json b/src/main/generated/data/minecraft/item/warped_fungus_on_a_stick.json index f884ebf5..cf67ded5 100644 --- a/src/main/generated/data/minecraft/item/warped_fungus_on_a_stick.json +++ b/src/main/generated/data/minecraft/item/warped_fungus_on_a_stick.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.warped_fungus_on_a_stick" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 100 }, @@ -11,6 +8,10 @@ "target": "minecraft:strider" } }, + "display": { + "model": "minecraft:warped_fungus_on_a_stick", + "translation_key": "item.minecraft.warped_fungus_on_a_stick" + }, "events": { "minecraft:break_item": { "action": { diff --git a/src/main/generated/data/minecraft/item/warped_hanging_sign.json b/src/main/generated/data/minecraft/item/warped_hanging_sign.json index ef1dcf11..597f5295 100644 --- a/src/main/generated/data/minecraft/item/warped_hanging_sign.json +++ b/src/main/generated/data/minecraft/item/warped_hanging_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.warped_hanging_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:warped_hanging_sign", + "translation_key": "block.minecraft.warped_hanging_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_hyphae.json b/src/main/generated/data/minecraft/item/warped_hyphae.json index 30e8e585..ac423537 100644 --- a/src/main/generated/data/minecraft/item/warped_hyphae.json +++ b/src/main/generated/data/minecraft/item/warped_hyphae.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_hyphae" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_hyphae" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_hyphae", + "translation_key": "block.minecraft.warped_hyphae" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_nylium.json b/src/main/generated/data/minecraft/item/warped_nylium.json index 595d8a70..76cc6c86 100644 --- a/src/main/generated/data/minecraft/item/warped_nylium.json +++ b/src/main/generated/data/minecraft/item/warped_nylium.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_nylium" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_nylium" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_nylium", + "translation_key": "block.minecraft.warped_nylium" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_planks.json b/src/main/generated/data/minecraft/item/warped_planks.json index 7a6c6cd5..d0ebb0f1 100644 --- a/src/main/generated/data/minecraft/item/warped_planks.json +++ b/src/main/generated/data/minecraft/item/warped_planks.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_planks" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_planks" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_planks", + "translation_key": "block.minecraft.warped_planks" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_pressure_plate.json b/src/main/generated/data/minecraft/item/warped_pressure_plate.json index 0bb0686f..6a9a844e 100644 --- a/src/main/generated/data/minecraft/item/warped_pressure_plate.json +++ b/src/main/generated/data/minecraft/item/warped_pressure_plate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_pressure_plate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_pressure_plate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_pressure_plate", + "translation_key": "block.minecraft.warped_pressure_plate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_roots.json b/src/main/generated/data/minecraft/item/warped_roots.json index 129466cc..54b8a9bc 100644 --- a/src/main/generated/data/minecraft/item/warped_roots.json +++ b/src/main/generated/data/minecraft/item/warped_roots.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.warped_roots" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_roots" }, @@ -11,6 +8,10 @@ }, "minecraft:stackable": 64 }, + "display": { + "model": "minecraft:warped_roots", + "translation_key": "block.minecraft.warped_roots" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/warped_sign.json b/src/main/generated/data/minecraft/item/warped_sign.json index 2dfb15aa..412559f1 100644 --- a/src/main/generated/data/minecraft/item/warped_sign.json +++ b/src/main/generated/data/minecraft/item/warped_sign.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.warped_sign" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -12,5 +9,9 @@ } }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:warped_sign", + "translation_key": "block.minecraft.warped_sign" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_slab.json b/src/main/generated/data/minecraft/item/warped_slab.json index e421e979..4a221387 100644 --- a/src/main/generated/data/minecraft/item/warped_slab.json +++ b/src/main/generated/data/minecraft/item/warped_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_slab", + "translation_key": "block.minecraft.warped_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_stairs.json b/src/main/generated/data/minecraft/item/warped_stairs.json index 454c8832..4ef5628b 100644 --- a/src/main/generated/data/minecraft/item/warped_stairs.json +++ b/src/main/generated/data/minecraft/item/warped_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_stairs", + "translation_key": "block.minecraft.warped_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_stem.json b/src/main/generated/data/minecraft/item/warped_stem.json index d0b91de4..125c5bdb 100644 --- a/src/main/generated/data/minecraft/item/warped_stem.json +++ b/src/main/generated/data/minecraft/item/warped_stem.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_stem" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_stem" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_stem", + "translation_key": "block.minecraft.warped_stem" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_trapdoor.json b/src/main/generated/data/minecraft/item/warped_trapdoor.json index 410ce263..4171b64a 100644 --- a/src/main/generated/data/minecraft/item/warped_trapdoor.json +++ b/src/main/generated/data/minecraft/item/warped_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.warped_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_trapdoor", + "translation_key": "block.minecraft.warped_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/warped_wart_block.json b/src/main/generated/data/minecraft/item/warped_wart_block.json index c7979fc4..43d17011 100644 --- a/src/main/generated/data/minecraft/item/warped_wart_block.json +++ b/src/main/generated/data/minecraft/item/warped_wart_block.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.warped_wart_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:warped_wart_block" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.85 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:warped_wart_block", + "translation_key": "block.minecraft.warped_wart_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/water_bucket.json b/src/main/generated/data/minecraft/item/water_bucket.json index 3fffa7b5..1cb1ac31 100644 --- a/src/main/generated/data/minecraft/item/water_bucket.json +++ b/src/main/generated/data/minecraft/item/water_bucket.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.water_bucket" - }, - "components": { + "behavior": { "minecraft:bucket": { "emptying_sound_event": "minecraft:item.bucket.empty", "fluid": "minecraft:water", @@ -12,5 +9,9 @@ "behavior": "minecraft:use_bucket" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:water_bucket", + "translation_key": "item.minecraft.water_bucket" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_chiseled_copper.json b/src/main/generated/data/minecraft/item/waxed_chiseled_copper.json index a7ed7216..405adb7b 100644 --- a/src/main/generated/data/minecraft/item/waxed_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_chiseled_copper", + "translation_key": "block.minecraft.waxed_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_copper_block.json b/src/main/generated/data/minecraft/item/waxed_copper_block.json index 0542b83d..dce77def 100644 --- a/src/main/generated/data/minecraft/item/waxed_copper_block.json +++ b/src/main/generated/data/minecraft/item/waxed_copper_block.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_copper_block" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_copper_block" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_copper_block", + "translation_key": "block.minecraft.waxed_copper_block" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_copper_bulb.json b/src/main/generated/data/minecraft/item/waxed_copper_bulb.json index 35c9b735..be37e23b 100644 --- a/src/main/generated/data/minecraft/item/waxed_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/waxed_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_copper_bulb", + "translation_key": "block.minecraft.waxed_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_copper_door.json b/src/main/generated/data/minecraft/item/waxed_copper_door.json index 2d26ea96..c7ce1c23 100644 --- a/src/main/generated/data/minecraft/item/waxed_copper_door.json +++ b/src/main/generated/data/minecraft/item/waxed_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_copper_door", + "translation_key": "block.minecraft.waxed_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_copper_grate.json b/src/main/generated/data/minecraft/item/waxed_copper_grate.json index 71172cf4..fa46a0e9 100644 --- a/src/main/generated/data/minecraft/item/waxed_copper_grate.json +++ b/src/main/generated/data/minecraft/item/waxed_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_copper_grate", + "translation_key": "block.minecraft.waxed_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_copper_trapdoor.json b/src/main/generated/data/minecraft/item/waxed_copper_trapdoor.json index 3c0b6550..37268a59 100644 --- a/src/main/generated/data/minecraft/item/waxed_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/waxed_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_copper_trapdoor", + "translation_key": "block.minecraft.waxed_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_cut_copper.json b/src/main/generated/data/minecraft/item/waxed_cut_copper.json index 3b86065b..79b48be6 100644 --- a/src/main/generated/data/minecraft/item/waxed_cut_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_cut_copper", + "translation_key": "block.minecraft.waxed_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_cut_copper_slab.json b/src/main/generated/data/minecraft/item/waxed_cut_copper_slab.json index 4cf90d6f..2f94512f 100644 --- a/src/main/generated/data/minecraft/item/waxed_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/waxed_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_cut_copper_slab", + "translation_key": "block.minecraft.waxed_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/waxed_cut_copper_stairs.json index a24eaafe..d1f1c839 100644 --- a/src/main/generated/data/minecraft/item/waxed_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/waxed_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_cut_copper_stairs", + "translation_key": "block.minecraft.waxed_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_chiseled_copper.json b/src/main/generated/data/minecraft/item/waxed_exposed_chiseled_copper.json index 8c2cd503..aaf20b4e 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_chiseled_copper", + "translation_key": "block.minecraft.waxed_exposed_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_copper.json b/src/main/generated/data/minecraft/item/waxed_exposed_copper.json index 2aecf2d4..9ff861da 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_copper", + "translation_key": "block.minecraft.waxed_exposed_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_copper_bulb.json b/src/main/generated/data/minecraft/item/waxed_exposed_copper_bulb.json index f840e10f..6acf48c0 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_copper_bulb", + "translation_key": "block.minecraft.waxed_exposed_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_copper_door.json b/src/main/generated/data/minecraft/item/waxed_exposed_copper_door.json index 9a824f49..06db22e6 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_copper_door.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_copper_door", + "translation_key": "block.minecraft.waxed_exposed_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_copper_grate.json b/src/main/generated/data/minecraft/item/waxed_exposed_copper_grate.json index 322e3bab..70755d0d 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_copper_grate.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_copper_grate", + "translation_key": "block.minecraft.waxed_exposed_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_copper_trapdoor.json b/src/main/generated/data/minecraft/item/waxed_exposed_copper_trapdoor.json index 997d021b..ea962b78 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_copper_trapdoor", + "translation_key": "block.minecraft.waxed_exposed_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper.json b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper.json index 3d9ef7f9..4820f74b 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_cut_copper", + "translation_key": "block.minecraft.waxed_exposed_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_slab.json b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_slab.json index adec6672..ce95a74b 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_cut_copper_slab", + "translation_key": "block.minecraft.waxed_exposed_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_stairs.json index afccb0af..9fb3c617 100644 --- a/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/waxed_exposed_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_exposed_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_exposed_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_exposed_cut_copper_stairs", + "translation_key": "block.minecraft.waxed_exposed_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_chiseled_copper.json b/src/main/generated/data/minecraft/item/waxed_oxidized_chiseled_copper.json index b34a237c..ad499b9f 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_chiseled_copper", + "translation_key": "block.minecraft.waxed_oxidized_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_copper.json b/src/main/generated/data/minecraft/item/waxed_oxidized_copper.json index afb26381..6a6a6966 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_copper", + "translation_key": "block.minecraft.waxed_oxidized_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_bulb.json b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_bulb.json index 35c52d0e..bd8de6f8 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_copper_bulb", + "translation_key": "block.minecraft.waxed_oxidized_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_door.json b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_door.json index b05efe43..88626f58 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_door.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_copper_door", + "translation_key": "block.minecraft.waxed_oxidized_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_grate.json b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_grate.json index 5a55e81e..560b52ec 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_grate.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_copper_grate", + "translation_key": "block.minecraft.waxed_oxidized_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_trapdoor.json b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_trapdoor.json index b0937399..5f68335d 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_copper_trapdoor", + "translation_key": "block.minecraft.waxed_oxidized_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper.json b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper.json index 6c20da3b..0cf0a8b9 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_cut_copper", + "translation_key": "block.minecraft.waxed_oxidized_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_slab.json b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_slab.json index a3ee9c90..9e3ae182 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_cut_copper_slab", + "translation_key": "block.minecraft.waxed_oxidized_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_stairs.json index 8e95ce51..2791e1fe 100644 --- a/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/waxed_oxidized_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_oxidized_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_oxidized_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_oxidized_cut_copper_stairs", + "translation_key": "block.minecraft.waxed_oxidized_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_chiseled_copper.json b/src/main/generated/data/minecraft/item/waxed_weathered_chiseled_copper.json index 28e1020a..fe52e08c 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_chiseled_copper", + "translation_key": "block.minecraft.waxed_weathered_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_copper.json b/src/main/generated/data/minecraft/item/waxed_weathered_copper.json index 008cbdfd..fe61385b 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_copper", + "translation_key": "block.minecraft.waxed_weathered_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_copper_bulb.json b/src/main/generated/data/minecraft/item/waxed_weathered_copper_bulb.json index 0ae8b78b..22880bc0 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_copper_bulb", + "translation_key": "block.minecraft.waxed_weathered_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_copper_door.json b/src/main/generated/data/minecraft/item/waxed_weathered_copper_door.json index 41fad5d8..9b23d438 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_copper_door.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_copper_door", + "translation_key": "block.minecraft.waxed_weathered_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_copper_grate.json b/src/main/generated/data/minecraft/item/waxed_weathered_copper_grate.json index b45383c8..4903501f 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_copper_grate.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_copper_grate", + "translation_key": "block.minecraft.waxed_weathered_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_copper_trapdoor.json b/src/main/generated/data/minecraft/item/waxed_weathered_copper_trapdoor.json index 85c5baf4..bdc5622d 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_copper_trapdoor", + "translation_key": "block.minecraft.waxed_weathered_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper.json b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper.json index 1f1e2e4a..cd1d2a3e 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_cut_copper", + "translation_key": "block.minecraft.waxed_weathered_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_slab.json b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_slab.json index 3b82f6f6..9f55ea7a 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_cut_copper_slab", + "translation_key": "block.minecraft.waxed_weathered_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_stairs.json index 8ae9a9c6..9576b500 100644 --- a/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/waxed_weathered_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.waxed_weathered_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:waxed_weathered_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:waxed_weathered_cut_copper_stairs", + "translation_key": "block.minecraft.waxed_weathered_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json index e5e196b9..93eb3e84 100644 --- a/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/wayfinder_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.wayfinder_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:wayfinder_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wayfinder_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.wayfinder_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_chiseled_copper.json b/src/main/generated/data/minecraft/item/weathered_chiseled_copper.json index 48ac4b87..90fc54e7 100644 --- a/src/main/generated/data/minecraft/item/weathered_chiseled_copper.json +++ b/src/main/generated/data/minecraft/item/weathered_chiseled_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_chiseled_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_chiseled_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_chiseled_copper", + "translation_key": "block.minecraft.weathered_chiseled_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_copper.json b/src/main/generated/data/minecraft/item/weathered_copper.json index b20e7711..3fe561dc 100644 --- a/src/main/generated/data/minecraft/item/weathered_copper.json +++ b/src/main/generated/data/minecraft/item/weathered_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_copper", + "translation_key": "block.minecraft.weathered_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_copper_bulb.json b/src/main/generated/data/minecraft/item/weathered_copper_bulb.json index 94d3fe30..7a664d6b 100644 --- a/src/main/generated/data/minecraft/item/weathered_copper_bulb.json +++ b/src/main/generated/data/minecraft/item/weathered_copper_bulb.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_copper_bulb" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_copper_bulb" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_copper_bulb", + "translation_key": "block.minecraft.weathered_copper_bulb" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_copper_door.json b/src/main/generated/data/minecraft/item/weathered_copper_door.json index d46b3c53..868963d0 100644 --- a/src/main/generated/data/minecraft/item/weathered_copper_door.json +++ b/src/main/generated/data/minecraft/item/weathered_copper_door.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_copper_door" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_copper_door" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_copper_door", + "translation_key": "block.minecraft.weathered_copper_door" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_copper_grate.json b/src/main/generated/data/minecraft/item/weathered_copper_grate.json index e1c0a7d9..3b8be5cf 100644 --- a/src/main/generated/data/minecraft/item/weathered_copper_grate.json +++ b/src/main/generated/data/minecraft/item/weathered_copper_grate.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_copper_grate" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_copper_grate" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_copper_grate", + "translation_key": "block.minecraft.weathered_copper_grate" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_copper_trapdoor.json b/src/main/generated/data/minecraft/item/weathered_copper_trapdoor.json index 583731cb..a0fac53c 100644 --- a/src/main/generated/data/minecraft/item/weathered_copper_trapdoor.json +++ b/src/main/generated/data/minecraft/item/weathered_copper_trapdoor.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_copper_trapdoor" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_copper_trapdoor" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_copper_trapdoor", + "translation_key": "block.minecraft.weathered_copper_trapdoor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_cut_copper.json b/src/main/generated/data/minecraft/item/weathered_cut_copper.json index 8c3d8c22..20177ec6 100644 --- a/src/main/generated/data/minecraft/item/weathered_cut_copper.json +++ b/src/main/generated/data/minecraft/item/weathered_cut_copper.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_cut_copper" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_cut_copper" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_cut_copper", + "translation_key": "block.minecraft.weathered_cut_copper" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_cut_copper_slab.json b/src/main/generated/data/minecraft/item/weathered_cut_copper_slab.json index 6d434406..efd0289f 100644 --- a/src/main/generated/data/minecraft/item/weathered_cut_copper_slab.json +++ b/src/main/generated/data/minecraft/item/weathered_cut_copper_slab.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_cut_copper_slab" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_cut_copper_slab" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_cut_copper_slab", + "translation_key": "block.minecraft.weathered_cut_copper_slab" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weathered_cut_copper_stairs.json b/src/main/generated/data/minecraft/item/weathered_cut_copper_stairs.json index 3f78ef60..2bb4d048 100644 --- a/src/main/generated/data/minecraft/item/weathered_cut_copper_stairs.json +++ b/src/main/generated/data/minecraft/item/weathered_cut_copper_stairs.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.weathered_cut_copper_stairs" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weathered_cut_copper_stairs" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weathered_cut_copper_stairs", + "translation_key": "block.minecraft.weathered_cut_copper_stairs" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/weeping_vines.json b/src/main/generated/data/minecraft/item/weeping_vines.json index 483c0cbb..e64a5d91 100644 --- a/src/main/generated/data/minecraft/item/weeping_vines.json +++ b/src/main/generated/data/minecraft/item/weeping_vines.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.weeping_vines" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:weeping_vines" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.5 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:weeping_vines", + "translation_key": "block.minecraft.weeping_vines" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wet_sponge.json b/src/main/generated/data/minecraft/item/wet_sponge.json index b8c49afa..160866da 100644 --- a/src/main/generated/data/minecraft/item/wet_sponge.json +++ b/src/main/generated/data/minecraft/item/wet_sponge.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.wet_sponge" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:wet_sponge" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wet_sponge", + "translation_key": "block.minecraft.wet_sponge" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wheat.json b/src/main/generated/data/minecraft/item/wheat.json index 17ea5890..06eb997d 100644 --- a/src/main/generated/data/minecraft/item/wheat.json +++ b/src/main/generated/data/minecraft/item/wheat.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.wheat" - }, - "components": { + "behavior": { "minecraft:compostable": { "level_increase_chance": 0.65 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wheat", + "translation_key": "item.minecraft.wheat" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wheat_seeds.json b/src/main/generated/data/minecraft/item/wheat_seeds.json index d4664d86..cbfe7ab8 100644 --- a/src/main/generated/data/minecraft/item/wheat_seeds.json +++ b/src/main/generated/data/minecraft/item/wheat_seeds.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wheat_seeds" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:wheat" }, @@ -10,5 +7,9 @@ "level_increase_chance": 0.3 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wheat_seeds", + "translation_key": "item.minecraft.wheat_seeds" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_banner.json b/src/main/generated/data/minecraft/item/white_banner.json index f00305c0..8d760d48 100644 --- a/src/main/generated/data/minecraft/item/white_banner.json +++ b/src/main/generated/data/minecraft/item/white_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.white_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "white" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:white_banner", + "translation_key": "block.minecraft.white_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_bed.json b/src/main/generated/data/minecraft/item/white_bed.json index 17477774..8f05a62b 100644 --- a/src/main/generated/data/minecraft/item/white_bed.json +++ b/src/main/generated/data/minecraft/item/white_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:white_bed", + "translation_key": "block.minecraft.white_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_candle.json b/src/main/generated/data/minecraft/item/white_candle.json index d3fe477b..9b821001 100644 --- a/src/main/generated/data/minecraft/item/white_candle.json +++ b/src/main/generated/data/minecraft/item/white_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_candle", + "translation_key": "block.minecraft.white_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_carpet.json b/src/main/generated/data/minecraft/item/white_carpet.json index d7b1b166..bdead375 100644 --- a/src/main/generated/data/minecraft/item/white_carpet.json +++ b/src/main/generated/data/minecraft/item/white_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.white_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:white_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_carpet", + "translation_key": "block.minecraft.white_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_concrete.json b/src/main/generated/data/minecraft/item/white_concrete.json index 06da9cae..57de2727 100644 --- a/src/main/generated/data/minecraft/item/white_concrete.json +++ b/src/main/generated/data/minecraft/item/white_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_concrete", + "translation_key": "block.minecraft.white_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_concrete_powder.json b/src/main/generated/data/minecraft/item/white_concrete_powder.json index 5399ebbb..762f296c 100644 --- a/src/main/generated/data/minecraft/item/white_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/white_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_concrete_powder", + "translation_key": "block.minecraft.white_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_dye.json b/src/main/generated/data/minecraft/item/white_dye.json index d5aa729e..f17d2a78 100644 --- a/src/main/generated/data/minecraft/item/white_dye.json +++ b/src/main/generated/data/minecraft/item/white_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.white_dye" - }, - "components": { + "behavior": { "minecraft:dye": "white", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_dye", + "translation_key": "item.minecraft.white_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_glazed_terracotta.json b/src/main/generated/data/minecraft/item/white_glazed_terracotta.json index d1e07283..4b045f68 100644 --- a/src/main/generated/data/minecraft/item/white_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/white_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_glazed_terracotta", + "translation_key": "block.minecraft.white_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_shulker_box.json b/src/main/generated/data/minecraft/item/white_shulker_box.json index 9ae61c7f..1490e99c 100644 --- a/src/main/generated/data/minecraft/item/white_shulker_box.json +++ b/src/main/generated/data/minecraft/item/white_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.white_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:white_shulker_box", + "translation_key": "block.minecraft.white_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_stained_glass.json b/src/main/generated/data/minecraft/item/white_stained_glass.json index 4a682983..4ebbbc08 100644 --- a/src/main/generated/data/minecraft/item/white_stained_glass.json +++ b/src/main/generated/data/minecraft/item/white_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_stained_glass", + "translation_key": "block.minecraft.white_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_stained_glass_pane.json b/src/main/generated/data/minecraft/item/white_stained_glass_pane.json index ad9cc940..fd368973 100644 --- a/src/main/generated/data/minecraft/item/white_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/white_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_stained_glass_pane", + "translation_key": "block.minecraft.white_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_terracotta.json b/src/main/generated/data/minecraft/item/white_terracotta.json index 93be28d0..d043b7b8 100644 --- a/src/main/generated/data/minecraft/item/white_terracotta.json +++ b/src/main/generated/data/minecraft/item/white_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.white_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_terracotta", + "translation_key": "block.minecraft.white_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_tulip.json b/src/main/generated/data/minecraft/item/white_tulip.json index 8918b455..88b0de85 100644 --- a/src/main/generated/data/minecraft/item/white_tulip.json +++ b/src/main/generated/data/minecraft/item/white_tulip.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.white_tulip" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_tulip" }, @@ -19,6 +16,10 @@ ] } }, + "display": { + "model": "minecraft:white_tulip", + "translation_key": "block.minecraft.white_tulip" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/white_wool.json b/src/main/generated/data/minecraft/item/white_wool.json index 3d7c6250..14e46a96 100644 --- a/src/main/generated/data/minecraft/item/white_wool.json +++ b/src/main/generated/data/minecraft/item/white_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.white_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:white_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:white_wool", + "translation_key": "block.minecraft.white_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json b/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json index 8f4f334e..bb1d6dff 100644 --- a/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json +++ b/src/main/generated/data/minecraft/item/wild_armor_trim_smithing_template.json @@ -1,12 +1,13 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "item.minecraft.wild_armor_trim_smithing_template" - }, - "components": { + "behavior": { "minecraft:smithing_template": { "template": "minecraft:wild_pattern" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wild_armor_trim_smithing_template", + "rarity": "uncommon", + "translation_key": "item.minecraft.wild_armor_trim_smithing_template" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wind_charge.json b/src/main/generated/data/minecraft/item/wind_charge.json index 6cf6717b..2dd9a61d 100644 --- a/src/main/generated/data/minecraft/item/wind_charge.json +++ b/src/main/generated/data/minecraft/item/wind_charge.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wind_charge" - }, - "components": { + "behavior": { "minecraft:cooldown": { "ticks": 10 }, @@ -19,5 +16,9 @@ "angle_offset": 0.0, "speed": 1.5 } + }, + "display": { + "model": "minecraft:wind_charge", + "translation_key": "item.minecraft.wind_charge" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/witch_spawn_egg.json b/src/main/generated/data/minecraft/item/witch_spawn_egg.json index 041da8f0..e1fa3caa 100644 --- a/src/main/generated/data/minecraft/item/witch_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/witch_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.witch_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:witch_spawn_egg", + "translation_key": "item.minecraft.witch_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wither_rose.json b/src/main/generated/data/minecraft/item/wither_rose.json index 44616e08..aa003cee 100644 --- a/src/main/generated/data/minecraft/item/wither_rose.json +++ b/src/main/generated/data/minecraft/item/wither_rose.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.wither_rose" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:wither_rose" }, @@ -18,6 +15,10 @@ ] } }, + "display": { + "model": "minecraft:wither_rose", + "translation_key": "block.minecraft.wither_rose" + }, "events": { "minecraft:use_on_block": { "action": { diff --git a/src/main/generated/data/minecraft/item/wither_skeleton_skull.json b/src/main/generated/data/minecraft/item/wither_skeleton_skull.json index 1e23585b..75d1a6cd 100644 --- a/src/main/generated/data/minecraft/item/wither_skeleton_skull.json +++ b/src/main/generated/data/minecraft/item/wither_skeleton_skull.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.wither_skeleton_skull" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:wither_skeleton_skull", + "rarity": "uncommon", + "translation_key": "block.minecraft.wither_skeleton_skull" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json b/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json index ee6f12f6..0bd76025 100644 --- a/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wither_skeleton_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wither_skeleton_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:wither_skeleton_spawn_egg", + "translation_key": "item.minecraft.wither_skeleton_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wither_spawn_egg.json b/src/main/generated/data/minecraft/item/wither_spawn_egg.json index 221e66e0..b36608bf 100644 --- a/src/main/generated/data/minecraft/item/wither_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wither_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wither_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:wither_spawn_egg", + "translation_key": "item.minecraft.wither_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wolf_armor.json b/src/main/generated/data/minecraft/item/wolf_armor.json index 9b638711..1e4088f9 100644 --- a/src/main/generated/data/minecraft/item/wolf_armor.json +++ b/src/main/generated/data/minecraft/item/wolf_armor.json @@ -1,11 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.wolf_armor" - }, - "components": { + "behavior": { "minecraft:armor": { - "armor_type": "canine", - "material": "minecraft:armadillo" + "attribute_id": "minecraft:armor.body", + "defense": 11, + "knockback_resistance": 0.0, + "toughness": 0.0 }, "minecraft:damageable": { "break_sound": "minecraft:item.wolf_armor.break", @@ -15,8 +14,11 @@ "default_color": 0 }, "minecraft:equipment": { + "allowed_entities": "minecraft:wolf", "equip_sound": "minecraft:item.armor.equip_wolf", - "slot": "body" + "model": "minecraft:armadillo_scute", + "slot": "body", + "swappable": true }, "minecraft:stackable": 1, "minecraft:tinted": { @@ -25,5 +27,9 @@ "index": 1 } } + }, + "display": { + "model": "minecraft:wolf_armor", + "translation_key": "item.minecraft.wolf_armor" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wolf_spawn_egg.json b/src/main/generated/data/minecraft/item/wolf_spawn_egg.json index 984ef7cc..1e9c05a1 100644 --- a/src/main/generated/data/minecraft/item/wolf_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/wolf_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wolf_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:wolf_spawn_egg", + "translation_key": "item.minecraft.wolf_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wooden_axe.json b/src/main/generated/data/minecraft/item/wooden_axe.json index caae3099..68077771 100644 --- a/src/main/generated/data/minecraft/item/wooden_axe.json +++ b/src/main/generated/data/minecraft/item/wooden_axe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wooden_axe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 59 }, @@ -37,5 +34,9 @@ "attack_speed": 0.2, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:wooden_axe", + "translation_key": "item.minecraft.wooden_axe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wooden_hoe.json b/src/main/generated/data/minecraft/item/wooden_hoe.json index a182f280..d8d36a08 100644 --- a/src/main/generated/data/minecraft/item/wooden_hoe.json +++ b/src/main/generated/data/minecraft/item/wooden_hoe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wooden_hoe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 59 }, @@ -38,6 +35,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:wooden_hoe", + "translation_key": "item.minecraft.wooden_hoe" + }, "events": { "minecraft:use_on_block": "minecraft:use_hoe_on_block" } diff --git a/src/main/generated/data/minecraft/item/wooden_pickaxe.json b/src/main/generated/data/minecraft/item/wooden_pickaxe.json index 2322787d..011de7bf 100644 --- a/src/main/generated/data/minecraft/item/wooden_pickaxe.json +++ b/src/main/generated/data/minecraft/item/wooden_pickaxe.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wooden_pickaxe" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 59 }, @@ -37,5 +34,9 @@ "attack_speed": 0.3, "damage_per_hit": 2 } + }, + "display": { + "model": "minecraft:wooden_pickaxe", + "translation_key": "item.minecraft.wooden_pickaxe" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wooden_shovel.json b/src/main/generated/data/minecraft/item/wooden_shovel.json index c8dcec57..8f11fc3a 100644 --- a/src/main/generated/data/minecraft/item/wooden_shovel.json +++ b/src/main/generated/data/minecraft/item/wooden_shovel.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wooden_shovel" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 59 }, @@ -38,6 +35,10 @@ "damage_per_hit": 2 } }, + "display": { + "model": "minecraft:wooden_shovel", + "translation_key": "item.minecraft.wooden_shovel" + }, "events": { "minecraft:use_on_block": "minecraft:use_shovel_on_block" } diff --git a/src/main/generated/data/minecraft/item/wooden_sword.json b/src/main/generated/data/minecraft/item/wooden_sword.json index ceaf89cc..fc9be2e1 100644 --- a/src/main/generated/data/minecraft/item/wooden_sword.json +++ b/src/main/generated/data/minecraft/item/wooden_sword.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.wooden_sword" - }, - "components": { + "behavior": { "minecraft:damageable": { "durability": 59 }, @@ -37,5 +34,9 @@ }, "attack_speed": 0.4 } + }, + "display": { + "model": "minecraft:wooden_sword", + "translation_key": "item.minecraft.wooden_sword" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/writable_book.json b/src/main/generated/data/minecraft/item/writable_book.json index f6fefb57..912397ba 100644 --- a/src/main/generated/data/minecraft/item/writable_book.json +++ b/src/main/generated/data/minecraft/item/writable_book.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "item.minecraft.writable_book" - }, - "components": { + "behavior": { "minecraft:stackable": 1, "minecraft:writable": { "transforms_into": "minecraft:written_book" } + }, + "display": { + "model": "minecraft:writable_book", + "translation_key": "item.minecraft.writable_book" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/written_book.json b/src/main/generated/data/minecraft/item/written_book.json index ea1b5dd6..c5c6c87d 100644 --- a/src/main/generated/data/minecraft/item/written_book.json +++ b/src/main/generated/data/minecraft/item/written_book.json @@ -1,12 +1,13 @@ { - "base": { - "glint": true, - "translation_key": "item.minecraft.written_book" - }, - "components": { + "behavior": { "minecraft:stackable": 16, "minecraft:text_holder": {} }, + "display": { + "glint": true, + "model": "minecraft:written_book", + "translation_key": "item.minecraft.written_book" + }, "events": { "minecraft:use": { "action": { diff --git a/src/main/generated/data/minecraft/item/yellow_banner.json b/src/main/generated/data/minecraft/item/yellow_banner.json index 6475c5b2..606f4437 100644 --- a/src/main/generated/data/minecraft/item/yellow_banner.json +++ b/src/main/generated/data/minecraft/item/yellow_banner.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.yellow_banner" - }, - "components": { + "behavior": { "minecraft:banner_pattern_holder": { "color": "yellow" }, @@ -18,5 +15,9 @@ "ticks": 300 }, "minecraft:stackable": 16 + }, + "display": { + "model": "minecraft:yellow_banner", + "translation_key": "block.minecraft.yellow_banner" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_bed.json b/src/main/generated/data/minecraft/item/yellow_bed.json index 756c8cb5..e2ebb84e 100644 --- a/src/main/generated/data/minecraft/item/yellow_bed.json +++ b/src/main/generated/data/minecraft/item/yellow_bed.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_bed" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_bed" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:yellow_bed", + "translation_key": "block.minecraft.yellow_bed" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_candle.json b/src/main/generated/data/minecraft/item/yellow_candle.json index ed703717..9d6a344d 100644 --- a/src/main/generated/data/minecraft/item/yellow_candle.json +++ b/src/main/generated/data/minecraft/item/yellow_candle.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_candle" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_candle" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_candle", + "translation_key": "block.minecraft.yellow_candle" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_carpet.json b/src/main/generated/data/minecraft/item/yellow_carpet.json index 600fe02f..2871673d 100644 --- a/src/main/generated/data/minecraft/item/yellow_carpet.json +++ b/src/main/generated/data/minecraft/item/yellow_carpet.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.yellow_carpet" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_carpet" }, @@ -10,12 +7,22 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "equip_sound": "minecraft:entity.horse.saddle", - "slot": "body" + "allowed_entities": [ + "minecraft:llama", + "minecraft:trader_llama" + ], + "equip_sound": "minecraft:entity.llama.swag", + "model": "minecraft:yellow_carpet", + "slot": "body", + "swappable": true }, "minecraft:fuel": { "ticks": 67 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_carpet", + "translation_key": "block.minecraft.yellow_carpet" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_concrete.json b/src/main/generated/data/minecraft/item/yellow_concrete.json index 26d09b01..ded3e020 100644 --- a/src/main/generated/data/minecraft/item/yellow_concrete.json +++ b/src/main/generated/data/minecraft/item/yellow_concrete.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_concrete" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_concrete" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_concrete", + "translation_key": "block.minecraft.yellow_concrete" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_concrete_powder.json b/src/main/generated/data/minecraft/item/yellow_concrete_powder.json index 9a245e81..a373c168 100644 --- a/src/main/generated/data/minecraft/item/yellow_concrete_powder.json +++ b/src/main/generated/data/minecraft/item/yellow_concrete_powder.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_concrete_powder" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_concrete_powder" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_concrete_powder", + "translation_key": "block.minecraft.yellow_concrete_powder" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_dye.json b/src/main/generated/data/minecraft/item/yellow_dye.json index 02b47850..2777a611 100644 --- a/src/main/generated/data/minecraft/item/yellow_dye.json +++ b/src/main/generated/data/minecraft/item/yellow_dye.json @@ -1,9 +1,10 @@ { - "base": { - "translation_key": "item.minecraft.yellow_dye" - }, - "components": { + "behavior": { "minecraft:dye": "yellow", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_dye", + "translation_key": "item.minecraft.yellow_dye" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_glazed_terracotta.json b/src/main/generated/data/minecraft/item/yellow_glazed_terracotta.json index 6f5452e6..b31517bd 100644 --- a/src/main/generated/data/minecraft/item/yellow_glazed_terracotta.json +++ b/src/main/generated/data/minecraft/item/yellow_glazed_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_glazed_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_glazed_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_glazed_terracotta", + "translation_key": "block.minecraft.yellow_glazed_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_shulker_box.json b/src/main/generated/data/minecraft/item/yellow_shulker_box.json index 5d8c5580..e3d12041 100644 --- a/src/main/generated/data/minecraft/item/yellow_shulker_box.json +++ b/src/main/generated/data/minecraft/item/yellow_shulker_box.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.yellow_shulker_box" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_shulker_box" }, @@ -10,5 +7,9 @@ "behavior": "minecraft:place_block_from_item" }, "minecraft:stackable": 1 + }, + "display": { + "model": "minecraft:yellow_shulker_box", + "translation_key": "block.minecraft.yellow_shulker_box" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_stained_glass.json b/src/main/generated/data/minecraft/item/yellow_stained_glass.json index 512bf73a..53975d57 100644 --- a/src/main/generated/data/minecraft/item/yellow_stained_glass.json +++ b/src/main/generated/data/minecraft/item/yellow_stained_glass.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_stained_glass" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_stained_glass" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_stained_glass", + "translation_key": "block.minecraft.yellow_stained_glass" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_stained_glass_pane.json b/src/main/generated/data/minecraft/item/yellow_stained_glass_pane.json index dd89f339..b2bce282 100644 --- a/src/main/generated/data/minecraft/item/yellow_stained_glass_pane.json +++ b/src/main/generated/data/minecraft/item/yellow_stained_glass_pane.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_stained_glass_pane" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_stained_glass_pane" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_stained_glass_pane", + "translation_key": "block.minecraft.yellow_stained_glass_pane" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_terracotta.json b/src/main/generated/data/minecraft/item/yellow_terracotta.json index 449e7381..2f175a13 100644 --- a/src/main/generated/data/minecraft/item/yellow_terracotta.json +++ b/src/main/generated/data/minecraft/item/yellow_terracotta.json @@ -1,11 +1,12 @@ { - "base": { - "translation_key": "block.minecraft.yellow_terracotta" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_terracotta" }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_terracotta", + "translation_key": "block.minecraft.yellow_terracotta" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/yellow_wool.json b/src/main/generated/data/minecraft/item/yellow_wool.json index a326c419..03a40f81 100644 --- a/src/main/generated/data/minecraft/item/yellow_wool.json +++ b/src/main/generated/data/minecraft/item/yellow_wool.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "block.minecraft.yellow_wool" - }, - "components": { + "behavior": { "minecraft:block": { "block": "minecraft:yellow_wool" }, @@ -10,5 +7,9 @@ "ticks": 100 }, "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:yellow_wool", + "translation_key": "block.minecraft.yellow_wool" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json b/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json index 1bc8a024..03f2dc84 100644 --- a/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zoglin_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.zoglin_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:zoglin_spawn_egg", + "translation_key": "item.minecraft.zoglin_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_head.json b/src/main/generated/data/minecraft/item/zombie_head.json index 2e1d1e13..26d32e78 100644 --- a/src/main/generated/data/minecraft/item/zombie_head.json +++ b/src/main/generated/data/minecraft/item/zombie_head.json @@ -1,9 +1,5 @@ { - "base": { - "rarity": "uncommon", - "translation_key": "block.minecraft.zombie_head" - }, - "components": { + "behavior": { "minecraft:block": { "block": { "type": "minecraft:attached_to_side", @@ -16,10 +12,14 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "equip_sound": "minecraft:item.armor.equip_generic", "slot": "head" }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 + }, + "display": { + "model": "minecraft:zombie_head", + "rarity": "uncommon", + "translation_key": "block.minecraft.zombie_head" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json index aa33d097..e8a4f3b7 100644 --- a/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_horse_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.zombie_horse_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:zombie_horse_spawn_egg", + "translation_key": "item.minecraft.zombie_horse_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_spawn_egg.json index bcd84d12..622b3866 100644 --- a/src/main/generated/data/minecraft/item/zombie_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.zombie_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:zombie_spawn_egg", + "translation_key": "item.minecraft.zombie_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json b/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json index cbedfeab..1b058ea2 100644 --- a/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombie_villager_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.zombie_villager_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:zombie_villager_spawn_egg", + "translation_key": "item.minecraft.zombie_villager_spawn_egg" } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json b/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json index 7b09fdad..a9748821 100644 --- a/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json +++ b/src/main/generated/data/minecraft/item/zombified_piglin_spawn_egg.json @@ -1,8 +1,5 @@ { - "base": { - "translation_key": "item.minecraft.zombified_piglin_spawn_egg" - }, - "components": { + "behavior": { "minecraft:dispensable": { "behavior": "minecraft:spawn_entity_from_item" }, @@ -27,5 +24,9 @@ ] } } + }, + "display": { + "model": "minecraft:zombified_piglin_spawn_egg", + "translation_key": "item.minecraft.zombified_piglin_spawn_egg" } } \ No newline at end of file diff --git a/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java b/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java index 1196c14d..3ce09976 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java @@ -1,16 +1,15 @@ package net.errorcraft.itematic.access.item; -import net.errorcraft.itematic.item.armor.ArmorMaterial; +import net.minecraft.entity.EntityType; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Identifier; -import net.minecraft.util.StringIdentifiable; +import net.minecraft.registry.entry.RegistryEntryList; +import net.minecraft.sound.SoundEvent; -public interface AnimalArmorItemTypeAccess extends StringIdentifiable { - @Override - default String asString() { +public interface AnimalArmorItemTypeAccess { + default RegistryEntry itematic$breakSound() { return null; - } - default Identifier itematic$textureId(RegistryEntry armorMaterial) { + }; + default RegistryEntryList> itematic$allowedEntities() { return null; - } + }; } diff --git a/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java b/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java index 979d561b..91560824 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java @@ -1,6 +1,6 @@ package net.errorcraft.itematic.access.item; -import net.errorcraft.itematic.item.ItemBase; +import net.errorcraft.itematic.item.ItemDisplay; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentSet; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -15,18 +15,18 @@ import java.util.Optional; public interface ItemAccess { - default ItemBase itematic$itemBase() { + default ItemDisplay itematic$display() { return null; } - default void itematic$setItemBase(ItemBase base) {} - default ItemComponentSet itematic$components() { + default void itematic$setDisplay(ItemDisplay display) {} + default ItemComponentSet itematic$behavior() { return null; } - default void itematic$setComponents(ItemComponentSet components) {} - default > boolean itematic$hasComponent(ItemComponentType type) { + default void itematic$setBehavior(ItemComponentSet components) {} + default > boolean itematic$hasBehavior(ItemComponentType type) { return false; } - default > Optional itematic$getComponent(ItemComponentType type) { + default > Optional itematic$getBehavior(ItemComponentType type) { return Optional.empty(); } default ItemEventMap itematic$events() { diff --git a/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java b/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java index 5243381b..f9543ed1 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java @@ -39,10 +39,10 @@ public interface ItemStackAccess { return false; } default void itematic$damage(int amount, ActionContext context) {} - default > boolean itematic$hasComponent(ItemComponentType type) { + default > boolean itematic$hasBehavior(ItemComponentType type) { return false; } - default > Optional itematic$getComponent(ItemComponentType type) { + default > Optional itematic$getBehavior(ItemComponentType type) { return Optional.empty(); } default boolean itematic$invokeEvent(ItemEvent event, ActionContext context) { diff --git a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java index fc9d1615..aea09e3f 100644 --- a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java @@ -33,6 +33,7 @@ public class ItematicDataComponentTypes { public static final ComponentType SHOOTER_DEFAULT_CHARGING_SOUNDS = DataComponentTypesAccessor.register("shooter_default_charging_sounds", builder -> builder.codec(CrossbowItem.LoadingSounds.CODEC).packetCodec(ChargingSoundsUtil.PACKET_CODEC).cache()); public static final ComponentType SHOOTER_CHARGED_POWER_RULES = DataComponentTypesAccessor.register("shooter_charged_power_rules", builder -> builder.codec(ChargeableShooterMethod.ChargedPowerRules.CODEC).packetCodec(ChargeableShooterMethod.ChargedPowerRules.PACKET_CODEC)); public static final ComponentType> SHOOTER_SHOOT_SOUND = DataComponentTypesAccessor.register("shooter_shoot_sound", builder -> builder.codec(SoundEvent.ENTRY_CODEC).packetCodec(SoundEvent.ENTRY_PACKET_CODEC)); + public static final ComponentType GLIDER = DataComponentTypesAccessor.register("glider", builder -> builder.codec(GliderDataComponent.CODEC).packetCodec(GliderDataComponent.PACKET_CODEC).cache()); private ItematicDataComponentTypes() {} diff --git a/src/main/java/net/errorcraft/itematic/component/type/GliderDataComponent.java b/src/main/java/net/errorcraft/itematic/component/type/GliderDataComponent.java new file mode 100644 index 00000000..b118b4b7 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/component/type/GliderDataComponent.java @@ -0,0 +1,25 @@ +package net.errorcraft.itematic.component.type; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.predicate.item.ItemPredicateUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.predicate.item.ItemPredicate; + +import java.util.Optional; + +public record GliderDataComponent(Optional useableIf) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + ItemPredicate.CODEC.optionalFieldOf("useable_if").forGetter(GliderDataComponent::useableIf) + ).apply(instance, GliderDataComponent::new)); + public static final PacketCodec PACKET_CODEC = ItemPredicateUtil.PACKET_CODEC.collect(PacketCodecs::optional) + .xmap(GliderDataComponent::new, GliderDataComponent::useableIf); + + public boolean canUse(ItemStack stack) { + return this.useableIf.map(useableIf -> useableIf.test(stack)) + .orElse(true); + } +} diff --git a/src/main/java/net/errorcraft/itematic/entity/EquipmentSlotUtil.java b/src/main/java/net/errorcraft/itematic/entity/EquipmentSlotUtil.java deleted file mode 100644 index 3e5f4b4b..00000000 --- a/src/main/java/net/errorcraft/itematic/entity/EquipmentSlotUtil.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.errorcraft.itematic.entity; - -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ArmorItem; -import org.jetbrains.annotations.Nullable; - -public class EquipmentSlotUtil { - private EquipmentSlotUtil() {} - - @Nullable - public static ArmorItem.Type armorType(EquipmentSlot slot) { - return switch (slot) { - case HEAD -> ArmorItem.Type.HELMET; - case CHEST -> ArmorItem.Type.CHESTPLATE; - case LEGS -> ArmorItem.Type.LEGGINGS; - case FEET -> ArmorItem.Type.BOOTS; - case BODY -> ArmorItem.Type.BODY; - default -> null; - }; - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/ItemBase.java b/src/main/java/net/errorcraft/itematic/item/ItemDisplay.java similarity index 53% rename from src/main/java/net/errorcraft/itematic/item/ItemBase.java rename to src/main/java/net/errorcraft/itematic/item/ItemDisplay.java index a30dcb4c..33fd27af 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemBase.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemDisplay.java @@ -3,58 +3,77 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.component.ItematicDataComponentTypes; +import net.errorcraft.itematic.mixin.item.ItemAccessor; import net.errorcraft.itematic.util.IdentifierUtil; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.item.Item; import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeyedValue; import net.minecraft.text.Text; import net.minecraft.text.TextCodecs; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; -import net.minecraft.util.Util; import java.util.ArrayList; import java.util.List; import java.util.Optional; -public record ItemBase(String translationKey, Rarity rarity, Optional> tooltip, Optional glint, Identifier itemBarStyle) { - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.STRING.fieldOf("translation_key").forGetter(ItemBase::translationKey), - Rarity.CODEC.optionalFieldOf("rarity", Rarity.COMMON).forGetter(ItemBase::rarity), - TextCodecs.CODEC.listOf().optionalFieldOf("tooltip").forGetter(ItemBase::tooltip), - Codec.BOOL.optionalFieldOf("glint").forGetter(ItemBase::glint), - Identifier.CODEC.optionalFieldOf("item_bar_style", ItemBarStyleKeys.DAMAGE).forGetter(ItemBase::itemBarStyle) - ).apply(instance, ItemBase::new)); +public record ItemDisplay(String translationKey, Identifier model, Rarity rarity, Optional> tooltip, Optional glint, Identifier itemBarStyle, Optional tooltipStyle) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.STRING.fieldOf("translation_key").forGetter(ItemDisplay::translationKey), + Identifier.CODEC.fieldOf("model").forGetter(ItemDisplay::model), + Rarity.CODEC.optionalFieldOf("rarity", Rarity.COMMON).forGetter(ItemDisplay::rarity), + TextCodecs.CODEC.listOf().optionalFieldOf("tooltip").forGetter(ItemDisplay::tooltip), + Codec.BOOL.optionalFieldOf("glint").forGetter(ItemDisplay::glint), + Identifier.CODEC.optionalFieldOf("item_bar_style", ItemBarStyleKeys.DAMAGE).forGetter(ItemDisplay::itemBarStyle), + Identifier.CODEC.optionalFieldOf("tooltip_style").forGetter(ItemDisplay::tooltipStyle) + ).apply(instance, ItemDisplay::new)); public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.ITEM_NAME, Text.translatable(this.translationKey)); + builder.add(DataComponentTypes.ITEM_MODEL, this.model); builder.add(DataComponentTypes.RARITY, this.rarity); this.glint.ifPresent(glint -> builder.add(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, glint)); builder.add(ItematicDataComponentTypes.ITEM_BAR_STYLE, this.itemBarStyle); + this.tooltipStyle.ifPresent(tooltipStyle -> builder.add(DataComponentTypes.TOOLTIP_STYLE, tooltipStyle)); } public static class Builder { + private static final RegistryKeyedValue ITEM_NAME_SUPPLIER = ItemAccessor.SettingsAccessor.itemNameSupplier(); + private static final RegistryKeyedValue BLOCK_NAME_SUPPLIER = ItemAccessor.SettingsAccessor.blockNameSupplier(); + private final String translationKey; + private final Identifier model; private Rarity rarity = Rarity.COMMON; private List tooltip; private Boolean glint; private Identifier itemBarStyle = ItemBarStyleKeys.DAMAGE; - private Builder(String name) { - this.translationKey = name; + private Builder(RegistryKey name, RegistryKeyedValue nameSupplier) { + this.translationKey = nameSupplier.get(name); + this.model = name.getValue(); } public static Builder forItem(RegistryKey name) { - return new Builder(Util.createTranslationKey("item", name.getValue())); + return new Builder(name, ITEM_NAME_SUPPLIER); } public static Builder forBlock(RegistryKey name) { - return new Builder(Util.createTranslationKey("block", name.getValue())); + return new Builder(name, BLOCK_NAME_SUPPLIER); } - public ItemBase build() { - return new ItemBase(this.translationKey, this.rarity, Optional.ofNullable(this.tooltip), Optional.ofNullable(this.glint), this.itemBarStyle); + public ItemDisplay build() { + return new ItemDisplay( + this.translationKey, + this.model, + this.rarity, + Optional.ofNullable(this.tooltip), + Optional.ofNullable(this.glint), + this.itemBarStyle, + Optional.empty() + ); } public Builder rarity(Rarity rarity) { diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index 3f16288d..1773d110 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -10,8 +10,6 @@ import net.errorcraft.itematic.entity.effect.StatusEffectKeys; import net.errorcraft.itematic.entity.initializer.initializers.*; import net.errorcraft.itematic.fluid.FluidKeys; -import net.errorcraft.itematic.item.armor.ArmorMaterial; -import net.errorcraft.itematic.item.armor.ArmorMaterialKeys; import net.errorcraft.itematic.item.color.colors.*; import net.errorcraft.itematic.item.component.ItemComponentSet; import net.errorcraft.itematic.item.component.ItemComponentTypes; @@ -32,8 +30,8 @@ import net.errorcraft.itematic.item.smithing.template.SmithingTemplates; import net.errorcraft.itematic.loot.predicate.SideCheckPredicate; import net.errorcraft.itematic.mixin.component.type.BundleContentsComponentAccessor; -import net.errorcraft.itematic.mixin.item.ArmorMaterialsAccessor; import net.errorcraft.itematic.mixin.item.BrushItemAccessor; +import net.errorcraft.itematic.mixin.item.BundleItemAccessor; import net.errorcraft.itematic.mixin.item.CrossbowItemAccessor; import net.errorcraft.itematic.potion.PotionKeys; import net.errorcraft.itematic.registry.ItematicRegistryKeys; @@ -70,6 +68,9 @@ import net.minecraft.fluid.Fluid; import net.minecraft.item.*; import net.minecraft.item.consume.UseAction; +import net.minecraft.item.equipment.ArmorMaterials; +import net.minecraft.item.equipment.EquipmentModels; +import net.minecraft.item.equipment.EquipmentType; import net.minecraft.loot.condition.*; import net.minecraft.loot.context.LootContext; import net.minecraft.particle.ParticleTypes; @@ -103,8 +104,8 @@ public class ItemUtil { public static final int UNSTACKABLE_MAX_STACK_SIZE = 1; public static final Codec CODEC = RecordCodecBuilder.create((instance) -> instance.group( - ItemBase.CODEC.fieldOf("base").forGetter(Item::itematic$itemBase), - ItemComponentSet.CODEC.optionalFieldOf("components", ItemComponentSet.EMPTY).forGetter(Item::itematic$components), + ItemDisplay.CODEC.fieldOf("display").forGetter(Item::itematic$display), + ItemComponentSet.CODEC.optionalFieldOf("behavior", ItemComponentSet.EMPTY).forGetter(Item::itematic$behavior), ItemEventMap.CODEC.optionalFieldOf("events", ItemEventMap.EMPTY).forGetter(Item::itematic$events) ).apply(instance, ItemUtil::create)); @@ -117,25 +118,24 @@ public static RegistryKey keyFromBlock(Block block) { return RegistryKey.of(RegistryKeys.ITEM, id); } - private static Item create(ItemBase base) { - return create(base, ItemComponentSet.EMPTY); + private static Item create(ItemDisplay display) { + return create(display, ItemComponentSet.EMPTY); } - private static Item create(ItemBase base, ItemComponentSet components) { - return create(base, components, ItemEventMap.EMPTY); + private static Item create(ItemDisplay display, ItemComponentSet components) { + return create(display, components, ItemEventMap.EMPTY); } - private static Item create(ItemBase base, ItemComponentSet components, ItemEventMap events) { + private static Item create(ItemDisplay display, ItemComponentSet components, ItemEventMap events) { Item item = new Item(new Item.Settings()); - item.itematic$setItemBase(base); - item.itematic$setComponents(components); + item.itematic$setDisplay(display); + item.itematic$setBehavior(components); item.itematic$setEvents(events); return item; } private static class Bootstrapper { private final Registerable registerable; - private final RegistryEntryLookup armorMaterials; private final RegistryEntryLookup items; private final RegistryEntryLookup> entityTypes; private final RegistryEntryLookup biomes; @@ -154,7 +154,6 @@ private static class Bootstrapper { private Bootstrapper(Registerable registerable) { this.registerable = registerable; - this.armorMaterials = registerable.getRegistryLookup(ItematicRegistryKeys.ARMOR_MATERIAL); this.items = registerable.getRegistryLookup(RegistryKeys.ITEM); this.entityTypes = registerable.getRegistryLookup(RegistryKeys.ENTITY_TYPE); this.biomes = registerable.getRegistryLookup(RegistryKeys.BIOME); @@ -194,7 +193,7 @@ private void bootstrap() { private void bootstrapConsumables() { this.bootstrapFood(); this.registerable.register(ItemKeys.MILK_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.MILK_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.MILK_BUCKET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.MILK_BUCKET) @@ -206,7 +205,7 @@ private void bootstrapConsumables() { .build() )); this.registerable.register(ItemKeys.POTION, create( - ItemBase.Builder.forItem(ItemKeys.POTION).build(), + ItemDisplay.Builder.forItem(ItemKeys.POTION).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.DRINK) @@ -257,7 +256,7 @@ private void bootstrapConsumables() { .build() )); this.registerable.register(ItemKeys.OMINOUS_BOTTLE, create( - ItemBase.Builder.forItem(ItemKeys.OMINOUS_BOTTLE) + ItemDisplay.Builder.forItem(ItemKeys.OMINOUS_BOTTLE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -273,7 +272,7 @@ private void bootstrapConsumables() { private void bootstrapFood() { this.registerable.register(ItemKeys.APPLE, create( - ItemBase.Builder.forItem(ItemKeys.APPLE).build(), + ItemDisplay.Builder.forItem(ItemKeys.APPLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -283,7 +282,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.MELON_SLICE, create( - ItemBase.Builder.forItem(ItemKeys.MELON_SLICE).build(), + ItemDisplay.Builder.forItem(ItemKeys.MELON_SLICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -293,7 +292,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.DRIED_KELP, create( - ItemBase.Builder.forItem(ItemKeys.DRIED_KELP).build(), + ItemDisplay.Builder.forItem(ItemKeys.DRIED_KELP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.DRIED_KELP) @@ -303,7 +302,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.CARROT, create( - ItemBase.Builder.forItem(ItemKeys.CARROT).build(), + ItemDisplay.Builder.forItem(ItemKeys.CARROT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -314,7 +313,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.POTATO, create( - ItemBase.Builder.forItem(ItemKeys.POTATO).build(), + ItemDisplay.Builder.forItem(ItemKeys.POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -325,7 +324,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.BAKED_POTATO, create( - ItemBase.Builder.forItem(ItemKeys.BAKED_POTATO).build(), + ItemDisplay.Builder.forItem(ItemKeys.BAKED_POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -335,7 +334,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.CHORUS_FRUIT, create( - ItemBase.Builder.forItem(ItemKeys.CHORUS_FRUIT).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHORUS_FRUIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -347,7 +346,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.BEETROOT, create( - ItemBase.Builder.forItem(ItemKeys.BEETROOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.BEETROOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -357,7 +356,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.SWEET_BERRIES, create( - ItemBase.Builder.forItem(ItemKeys.SWEET_BERRIES).build(), + ItemDisplay.Builder.forItem(ItemKeys.SWEET_BERRIES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -368,7 +367,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.GLOW_BERRIES, create( - ItemBase.Builder.forItem(ItemKeys.GLOW_BERRIES).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOW_BERRIES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -379,7 +378,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.BREAD, create( - ItemBase.Builder.forItem(ItemKeys.BREAD).build(), + ItemDisplay.Builder.forItem(ItemKeys.BREAD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -389,7 +388,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKIE, create( - ItemBase.Builder.forItem(ItemKeys.COOKIE).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKIE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -399,7 +398,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.PORKCHOP, create( - ItemBase.Builder.forItem(ItemKeys.PORKCHOP).build(), + ItemDisplay.Builder.forItem(ItemKeys.PORKCHOP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -408,7 +407,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_PORKCHOP, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_PORKCHOP).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_PORKCHOP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -417,7 +416,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.BEEF, create( - ItemBase.Builder.forItem(ItemKeys.BEEF).build(), + ItemDisplay.Builder.forItem(ItemKeys.BEEF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -426,7 +425,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_BEEF, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_BEEF).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_BEEF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -435,7 +434,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.CHICKEN, create( - ItemBase.Builder.forItem(ItemKeys.CHICKEN).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHICKEN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -455,7 +454,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_CHICKEN, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_CHICKEN).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_CHICKEN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -464,7 +463,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.RABBIT, create( - ItemBase.Builder.forItem(ItemKeys.RABBIT).build(), + ItemDisplay.Builder.forItem(ItemKeys.RABBIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -473,7 +472,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_RABBIT, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_RABBIT).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_RABBIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -482,7 +481,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.MUTTON, create( - ItemBase.Builder.forItem(ItemKeys.MUTTON).build(), + ItemDisplay.Builder.forItem(ItemKeys.MUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -491,7 +490,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_MUTTON, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_MUTTON).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_MUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -500,7 +499,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COD, create( - ItemBase.Builder.forItem(ItemKeys.COD).build(), + ItemDisplay.Builder.forItem(ItemKeys.COD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -509,7 +508,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.SALMON, create( - ItemBase.Builder.forItem(ItemKeys.SALMON).build(), + ItemDisplay.Builder.forItem(ItemKeys.SALMON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -518,7 +517,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.TROPICAL_FISH, create( - ItemBase.Builder.forItem(ItemKeys.TROPICAL_FISH).build(), + ItemDisplay.Builder.forItem(ItemKeys.TROPICAL_FISH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -527,7 +526,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.PUFFERFISH, create( - ItemBase.Builder.forItem(ItemKeys.PUFFERFISH).build(), + ItemDisplay.Builder.forItem(ItemKeys.PUFFERFISH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -545,7 +544,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_COD, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_COD).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_COD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -554,7 +553,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.COOKED_SALMON, create( - ItemBase.Builder.forItem(ItemKeys.COOKED_SALMON).build(), + ItemDisplay.Builder.forItem(ItemKeys.COOKED_SALMON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -563,7 +562,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.MUSHROOM_STEW, create( - ItemBase.Builder.forItem(ItemKeys.MUSHROOM_STEW).build(), + ItemDisplay.Builder.forItem(ItemKeys.MUSHROOM_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -573,7 +572,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.RABBIT_STEW, create( - ItemBase.Builder.forItem(ItemKeys.RABBIT_STEW).build(), + ItemDisplay.Builder.forItem(ItemKeys.RABBIT_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -583,7 +582,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.BEETROOT_SOUP, create( - ItemBase.Builder.forItem(ItemKeys.BEETROOT_SOUP).build(), + ItemDisplay.Builder.forItem(ItemKeys.BEETROOT_SOUP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -593,7 +592,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.SUSPICIOUS_STEW, create( - ItemBase.Builder.forItem(ItemKeys.SUSPICIOUS_STEW).build(), + ItemDisplay.Builder.forItem(ItemKeys.SUSPICIOUS_STEW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -606,7 +605,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.ROTTEN_FLESH, create( - ItemBase.Builder.forItem(ItemKeys.ROTTEN_FLESH).build(), + ItemDisplay.Builder.forItem(ItemKeys.ROTTEN_FLESH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -626,7 +625,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.SPIDER_EYE, create( - ItemBase.Builder.forItem(ItemKeys.SPIDER_EYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPIDER_EYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -642,7 +641,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.POISONOUS_POTATO, create( - ItemBase.Builder.forItem(ItemKeys.POISONOUS_POTATO).build(), + ItemDisplay.Builder.forItem(ItemKeys.POISONOUS_POTATO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -662,7 +661,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.GOLDEN_APPLE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_APPLE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_APPLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -679,7 +678,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.ENCHANTED_GOLDEN_APPLE, create( - ItemBase.Builder.forItem(ItemKeys.ENCHANTED_GOLDEN_APPLE) + ItemDisplay.Builder.forItem(ItemKeys.ENCHANTED_GOLDEN_APPLE) .rarity(Rarity.RARE) .glint() .build(), @@ -701,7 +700,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.GOLDEN_CARROT, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_CARROT).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_CARROT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -710,7 +709,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.PUMPKIN_PIE, create( - ItemBase.Builder.forItem(ItemKeys.PUMPKIN_PIE).build(), + ItemDisplay.Builder.forItem(ItemKeys.PUMPKIN_PIE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ConsumableItemComponent.builder(ConsumableComponents.FOOD) @@ -720,7 +719,7 @@ private void bootstrapFood() { .build() )); this.registerable.register(ItemKeys.HONEY_BOTTLE, create( - ItemBase.Builder.forItem(ItemKeys.HONEY_BOTTLE).build(), + ItemDisplay.Builder.forItem(ItemKeys.HONEY_BOTTLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(ConsumableItemComponent.builder(ConsumableComponents.HONEY_BOTTLE) @@ -748,189 +747,189 @@ private void bootstrapBlocks() { this.bootstrapItemNameBlocks(); this.bootstrapOperatorOnlyBlocks(); this.registerable.register(ItemKeys.STONE, create( - ItemBase.Builder.forBlock(ItemKeys.STONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE))) .build() )); this.registerable.register(ItemKeys.GRANITE, create( - ItemBase.Builder.forBlock(ItemKeys.GRANITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRANITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRANITE))) .build() )); this.registerable.register(ItemKeys.POLISHED_GRANITE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_GRANITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_GRANITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_GRANITE))) .build() )); this.registerable.register(ItemKeys.DIORITE, create( - ItemBase.Builder.forBlock(ItemKeys.DIORITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIORITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIORITE))) .build() )); this.registerable.register(ItemKeys.POLISHED_DIORITE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DIORITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DIORITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DIORITE))) .build() )); this.registerable.register(ItemKeys.ANDESITE, create( - ItemBase.Builder.forBlock(ItemKeys.ANDESITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANDESITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANDESITE))) .build() )); this.registerable.register(ItemKeys.POLISHED_ANDESITE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_ANDESITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_ANDESITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_ANDESITE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.COBBLED_DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLED_DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.POLISHED_DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.CALCITE, create( - ItemBase.Builder.forBlock(ItemKeys.CALCITE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CALCITE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CALCITE))) .build() )); this.registerable.register(ItemKeys.TUFF, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF))) .build() )); this.registerable.register(ItemKeys.TUFF_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_SLAB))) .build() )); this.registerable.register(ItemKeys.TUFF_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_STAIRS))) .build() )); this.registerable.register(ItemKeys.TUFF_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_WALL))) .build() )); this.registerable.register(ItemKeys.CHISELED_TUFF, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_TUFF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_TUFF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_TUFF))) .build() )); this.registerable.register(ItemKeys.POLISHED_TUFF, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_TUFF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_TUFF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_TUFF))) .build() )); this.registerable.register(ItemKeys.POLISHED_TUFF_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_TUFF_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_TUFF_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_TUFF_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_TUFF_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_TUFF_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_TUFF_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_TUFF_STAIRS))) .build() )); this.registerable.register(ItemKeys.POLISHED_TUFF_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_TUFF_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_TUFF_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_TUFF_WALL))) .build() )); this.registerable.register(ItemKeys.TUFF_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_BRICKS))) .build() )); this.registerable.register(ItemKeys.TUFF_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.TUFF_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.TUFF_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.TUFF_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUFF_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUFF_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.CHISELED_TUFF_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_TUFF_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_TUFF_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_TUFF_BRICKS))) .build() )); this.registerable.register(ItemKeys.DRIPSTONE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DRIPSTONE_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DRIPSTONE_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DRIPSTONE_BLOCK))) .build() )); this.registerable.register(ItemKeys.GRASS_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.GRASS_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRASS_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRASS_BLOCK))) @@ -938,266 +937,266 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.DIRT, create( - ItemBase.Builder.forBlock(ItemKeys.DIRT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIRT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIRT))) .build() )); this.registerable.register(ItemKeys.COARSE_DIRT, create( - ItemBase.Builder.forBlock(ItemKeys.COARSE_DIRT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COARSE_DIRT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COARSE_DIRT))) .build() )); this.registerable.register(ItemKeys.PODZOL, create( - ItemBase.Builder.forBlock(ItemKeys.PODZOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PODZOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PODZOL))) .build() )); this.registerable.register(ItemKeys.ROOTED_DIRT, create( - ItemBase.Builder.forBlock(ItemKeys.ROOTED_DIRT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ROOTED_DIRT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ROOTED_DIRT))) .build() )); this.registerable.register(ItemKeys.MUD, create( - ItemBase.Builder.forBlock(ItemKeys.MUD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUD))) .build() )); this.registerable.register(ItemKeys.CRIMSON_NYLIUM, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_NYLIUM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_NYLIUM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_NYLIUM))) .build() )); this.registerable.register(ItemKeys.WARPED_NYLIUM, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_NYLIUM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_NYLIUM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_NYLIUM))) .build() )); this.registerable.register(ItemKeys.COBBLESTONE, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLESTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLESTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLESTONE))) .build() )); this.registerable.register(ItemKeys.CRIMSON_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_PLANKS))) .build() )); this.registerable.register(ItemKeys.WARPED_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_PLANKS))) .build() )); this.registerable.register(ItemKeys.BEDROCK, create( - ItemBase.Builder.forBlock(ItemKeys.BEDROCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BEDROCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BEDROCK))) .build() )); this.registerable.register(ItemKeys.SAND, create( - ItemBase.Builder.forBlock(ItemKeys.SAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SAND))) .build() )); this.registerable.register(ItemKeys.SUSPICIOUS_SAND, create( - ItemBase.Builder.forBlock(ItemKeys.SUSPICIOUS_SAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SUSPICIOUS_SAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SUSPICIOUS_SAND))) .build() )); this.registerable.register(ItemKeys.SUSPICIOUS_GRAVEL, create( - ItemBase.Builder.forBlock(ItemKeys.SUSPICIOUS_GRAVEL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SUSPICIOUS_GRAVEL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SUSPICIOUS_GRAVEL))) .build() )); this.registerable.register(ItemKeys.RED_SAND, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SAND))) .build() )); this.registerable.register(ItemKeys.GRAVEL, create( - ItemBase.Builder.forBlock(ItemKeys.GRAVEL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAVEL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAVEL))) .build() )); this.registerable.register(ItemKeys.COAL_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.COAL_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COAL_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COAL_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_COAL_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_COAL_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_COAL_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_COAL_ORE))) .build() )); this.registerable.register(ItemKeys.IRON_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.IRON_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.IRON_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.IRON_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_IRON_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_IRON_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_IRON_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_IRON_ORE))) .build() )); this.registerable.register(ItemKeys.COPPER_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_COPPER_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_COPPER_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_COPPER_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_COPPER_ORE))) .build() )); this.registerable.register(ItemKeys.GOLD_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.GOLD_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GOLD_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GOLD_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_GOLD_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_GOLD_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_GOLD_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_GOLD_ORE))) .build() )); this.registerable.register(ItemKeys.REDSTONE_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.REDSTONE_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REDSTONE_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REDSTONE_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_REDSTONE_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_REDSTONE_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_REDSTONE_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_REDSTONE_ORE))) .build() )); this.registerable.register(ItemKeys.EMERALD_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.EMERALD_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EMERALD_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EMERALD_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_EMERALD_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_EMERALD_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_EMERALD_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_EMERALD_ORE))) .build() )); this.registerable.register(ItemKeys.LAPIS_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.LAPIS_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LAPIS_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LAPIS_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_LAPIS_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_LAPIS_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_LAPIS_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_LAPIS_ORE))) .build() )); this.registerable.register(ItemKeys.DIAMOND_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DIAMOND_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIAMOND_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIAMOND_ORE))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_DIAMOND_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_DIAMOND_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_DIAMOND_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_DIAMOND_ORE))) .build() )); this.registerable.register(ItemKeys.NETHER_GOLD_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_GOLD_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_GOLD_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_GOLD_ORE))) .build() )); this.registerable.register(ItemKeys.NETHER_QUARTZ_ORE, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_QUARTZ_ORE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_QUARTZ_ORE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_QUARTZ_ORE))) .build() )); this.registerable.register(ItemKeys.RAW_IRON_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.RAW_IRON_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RAW_IRON_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RAW_IRON_BLOCK))) .build() )); this.registerable.register(ItemKeys.RAW_COPPER_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.RAW_COPPER_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RAW_COPPER_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RAW_COPPER_BLOCK))) .build() )); this.registerable.register(ItemKeys.RAW_GOLD_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.RAW_GOLD_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RAW_GOLD_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RAW_GOLD_BLOCK))) .build() )); this.registerable.register(ItemKeys.HEAVY_CORE, create( - ItemBase.Builder.forBlock(ItemKeys.HEAVY_CORE) + ItemDisplay.Builder.forBlock(ItemKeys.HEAVY_CORE) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -1206,798 +1205,798 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.AMETHYST_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.AMETHYST_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.AMETHYST_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.AMETHYST_BLOCK))) .build() )); this.registerable.register(ItemKeys.BUDDING_AMETHYST, create( - ItemBase.Builder.forBlock(ItemKeys.BUDDING_AMETHYST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BUDDING_AMETHYST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BUDDING_AMETHYST))) .build() )); this.registerable.register(ItemKeys.IRON_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.IRON_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.IRON_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.IRON_BLOCK))) .build() )); this.registerable.register(ItemKeys.COPPER_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_BLOCK))) .build() )); this.registerable.register(ItemKeys.GOLD_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.GOLD_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GOLD_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GOLD_BLOCK))) .build() )); this.registerable.register(ItemKeys.DIAMOND_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DIAMOND_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIAMOND_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIAMOND_BLOCK))) .build() )); this.registerable.register(ItemKeys.EXPOSED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_COPPER))) .build() )); this.registerable.register(ItemKeys.WEATHERED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_COPPER))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_COPPER))) .build() )); this.registerable.register(ItemKeys.CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.EXPOSED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.WEATHERED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.EXPOSED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.WEATHERED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.EXPOSED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.WEATHERED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.EXPOSED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.WEATHERED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.WAXED_COPPER_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_COPPER_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_COPPER_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_COPPER_BLOCK))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_CHISELED_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CHISELED_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CHISELED_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_CHISELED_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_CUT_COPPER, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_CUT_COPPER))) .build() )); this.registerable.register(ItemKeys.WAXED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_CUT_COPPER_STAIRS))) .build() )); this.registerable.register(ItemKeys.WAXED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_CUT_COPPER_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_CUT_COPPER_SLAB))) .build() )); this.registerable.register(ItemKeys.MUDDY_MANGROVE_ROOTS, create( - ItemBase.Builder.forBlock(ItemKeys.MUDDY_MANGROVE_ROOTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUDDY_MANGROVE_ROOTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUDDY_MANGROVE_ROOTS))) .build() )); this.registerable.register(ItemKeys.CRIMSON_STEM, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_STEM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_STEM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_STEM))) .build() )); this.registerable.register(ItemKeys.WARPED_STEM, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_STEM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_STEM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_STEM))) .build() )); this.registerable.register(ItemKeys.STRIPPED_CRIMSON_STEM, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_CRIMSON_STEM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_CRIMSON_STEM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_CRIMSON_STEM))) .build() )); this.registerable.register(ItemKeys.STRIPPED_WARPED_STEM, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_WARPED_STEM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_WARPED_STEM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_WARPED_STEM))) .build() )); this.registerable.register(ItemKeys.STRIPPED_CRIMSON_HYPHAE, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_CRIMSON_HYPHAE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_CRIMSON_HYPHAE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_CRIMSON_HYPHAE))) .build() )); this.registerable.register(ItemKeys.STRIPPED_WARPED_HYPHAE, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_WARPED_HYPHAE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_WARPED_HYPHAE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_WARPED_HYPHAE))) .build() )); this.registerable.register(ItemKeys.CRIMSON_HYPHAE, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_HYPHAE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_HYPHAE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_HYPHAE))) .build() )); this.registerable.register(ItemKeys.WARPED_HYPHAE, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_HYPHAE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_HYPHAE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_HYPHAE))) .build() )); this.registerable.register(ItemKeys.SPONGE, create( - ItemBase.Builder.forBlock(ItemKeys.SPONGE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPONGE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPONGE))) .build() )); this.registerable.register(ItemKeys.WET_SPONGE, create( - ItemBase.Builder.forBlock(ItemKeys.WET_SPONGE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WET_SPONGE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WET_SPONGE))) .build() )); this.registerable.register(ItemKeys.GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GLASS))) .build() )); this.registerable.register(ItemKeys.TINTED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.TINTED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TINTED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TINTED_GLASS))) .build() )); this.registerable.register(ItemKeys.LAPIS_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.LAPIS_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LAPIS_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LAPIS_BLOCK))) .build() )); this.registerable.register(ItemKeys.SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SANDSTONE))) .build() )); this.registerable.register(ItemKeys.CHISELED_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.CUT_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.COBWEB, create( - ItemBase.Builder.forBlock(ItemKeys.COBWEB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBWEB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBWEB))) .build() )); this.registerable.register(ItemKeys.CRIMSON_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_SLAB))) .build() )); this.registerable.register(ItemKeys.WARPED_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_SLAB))) .build() )); this.registerable.register(ItemKeys.STONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_SLAB))) .build() )); this.registerable.register(ItemKeys.SMOOTH_STONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_STONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_STONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_STONE_SLAB))) .build() )); this.registerable.register(ItemKeys.SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.CUT_SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.PETRIFIED_OAK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.PETRIFIED_OAK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PETRIFIED_OAK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PETRIFIED_OAK_SLAB))) .build() )); this.registerable.register(ItemKeys.COBBLESTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLESTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLESTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLESTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.STONE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.MUD_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.MUD_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUD_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUD_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.NETHER_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.QUARTZ_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.QUARTZ_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.QUARTZ_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.QUARTZ_SLAB))) .build() )); this.registerable.register(ItemKeys.RED_SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.CUT_RED_SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_RED_SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_RED_SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_RED_SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.PURPUR_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.PURPUR_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPUR_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPUR_SLAB))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_SLAB))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.DARK_PRISMARINE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_PRISMARINE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_PRISMARINE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_PRISMARINE_SLAB))) .build() )); this.registerable.register(ItemKeys.SMOOTH_QUARTZ, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_QUARTZ))) .build() )); this.registerable.register(ItemKeys.SMOOTH_RED_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_RED_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.SMOOTH_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.SMOOTH_STONE, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_STONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_STONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_STONE))) .build() )); this.registerable.register(ItemKeys.BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRICKS))) .build() )); this.registerable.register(ItemKeys.DECORATED_POT, create( - ItemBase.Builder.forBlock(ItemKeys.DECORATED_POT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DECORATED_POT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DECORATED_POT))) .build() )); this.registerable.register(ItemKeys.MOSSY_COBBLESTONE, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_COBBLESTONE))) .build() )); this.registerable.register(ItemKeys.OBSIDIAN, create( - ItemBase.Builder.forBlock(ItemKeys.OBSIDIAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OBSIDIAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OBSIDIAN))) .build() )); this.registerable.register(ItemKeys.END_ROD, create( - ItemBase.Builder.forBlock(ItemKeys.END_ROD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_ROD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_ROD))) .build() )); this.registerable.register(ItemKeys.CHORUS_PLANT, create( - ItemBase.Builder.forBlock(ItemKeys.CHORUS_PLANT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHORUS_PLANT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHORUS_PLANT))) .build() )); this.registerable.register(ItemKeys.CHORUS_FLOWER, create( - ItemBase.Builder.forBlock(ItemKeys.CHORUS_FLOWER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHORUS_FLOWER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHORUS_FLOWER))) .build() )); this.registerable.register(ItemKeys.PURPUR_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.PURPUR_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPUR_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPUR_BLOCK))) .build() )); this.registerable.register(ItemKeys.PURPUR_PILLAR, create( - ItemBase.Builder.forBlock(ItemKeys.PURPUR_PILLAR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPUR_PILLAR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPUR_PILLAR))) .build() )); this.registerable.register(ItemKeys.PURPUR_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.PURPUR_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPUR_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPUR_STAIRS))) .build() )); this.registerable.register(ItemKeys.SPAWNER, create( - ItemBase.Builder.forBlock(ItemKeys.SPAWNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPAWNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPAWNER))) .build() )); this.registerable.register(ItemKeys.FARMLAND, create( - ItemBase.Builder.forBlock(ItemKeys.FARMLAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FARMLAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FARMLAND))) .build() )); this.registerable.register(ItemKeys.FURNACE, create( - ItemBase.Builder.forBlock(ItemKeys.FURNACE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FURNACE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FURNACE))) .build() )); this.registerable.register(ItemKeys.COBBLESTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLESTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLESTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLESTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.SNOW, create( - ItemBase.Builder.forBlock(ItemKeys.SNOW).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SNOW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SNOW))) .build() )); this.registerable.register(ItemKeys.ICE, create( - ItemBase.Builder.forBlock(ItemKeys.ICE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ICE))) .build() )); this.registerable.register(ItemKeys.SNOW_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.SNOW_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SNOW_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SNOW_BLOCK))) .build() )); this.registerable.register(ItemKeys.CLAY, create( - ItemBase.Builder.forBlock(ItemKeys.CLAY).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CLAY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CLAY))) .build() )); this.registerable.register(ItemKeys.CRIMSON_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_FENCE))) .build() )); this.registerable.register(ItemKeys.WARPED_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_FENCE))) .build() )); this.registerable.register(ItemKeys.JACK_O_LANTERN, create( - ItemBase.Builder.forBlock(ItemKeys.JACK_O_LANTERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JACK_O_LANTERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JACK_O_LANTERN))) .build() )); this.registerable.register(ItemKeys.NETHERRACK, create( - ItemBase.Builder.forBlock(ItemKeys.NETHERRACK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHERRACK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHERRACK))) .build() )); this.registerable.register(ItemKeys.SOUL_SAND, create( - ItemBase.Builder.forBlock(ItemKeys.SOUL_SAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SOUL_SAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SOUL_SAND))) .build() )); this.registerable.register(ItemKeys.SOUL_SOIL, create( - ItemBase.Builder.forBlock(ItemKeys.SOUL_SOIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SOUL_SOIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SOUL_SOIL))) .build() )); this.registerable.register(ItemKeys.BASALT, create( - ItemBase.Builder.forBlock(ItemKeys.BASALT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BASALT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BASALT))) .build() )); this.registerable.register(ItemKeys.POLISHED_BASALT, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BASALT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BASALT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BASALT))) .build() )); this.registerable.register(ItemKeys.SMOOTH_BASALT, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_BASALT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_BASALT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_BASALT))) .build() )); this.registerable.register(ItemKeys.GLOWSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.GLOWSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GLOWSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GLOWSTONE))) @@ -2005,280 +2004,280 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.INFESTED_STONE, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_STONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_STONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_STONE))) .build() )); this.registerable.register(ItemKeys.INFESTED_COBBLESTONE, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_COBBLESTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_COBBLESTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_COBBLESTONE))) .build() )); this.registerable.register(ItemKeys.INFESTED_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.INFESTED_MOSSY_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_MOSSY_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_MOSSY_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_MOSSY_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.INFESTED_CRACKED_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_CRACKED_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_CRACKED_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_CRACKED_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.INFESTED_CHISELED_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_CHISELED_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_CHISELED_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_CHISELED_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.INFESTED_DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.INFESTED_DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.INFESTED_DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.INFESTED_DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.MOSSY_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.CRACKED_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CRACKED_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRACKED_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRACKED_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.CHISELED_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.PACKED_MUD, create( - ItemBase.Builder.forBlock(ItemKeys.PACKED_MUD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PACKED_MUD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PACKED_MUD))) .build() )); this.registerable.register(ItemKeys.MUD_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.MUD_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUD_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUD_BRICKS))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_BRICKS))) .build() )); this.registerable.register(ItemKeys.CRACKED_DEEPSLATE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CRACKED_DEEPSLATE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRACKED_DEEPSLATE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRACKED_DEEPSLATE_BRICKS))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_TILES, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_TILES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_TILES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_TILES))) .build() )); this.registerable.register(ItemKeys.CRACKED_DEEPSLATE_TILES, create( - ItemBase.Builder.forBlock(ItemKeys.CRACKED_DEEPSLATE_TILES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRACKED_DEEPSLATE_TILES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRACKED_DEEPSLATE_TILES))) .build() )); this.registerable.register(ItemKeys.CHISELED_DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.REINFORCED_DEEPSLATE, create( - ItemBase.Builder.forBlock(ItemKeys.REINFORCED_DEEPSLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REINFORCED_DEEPSLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REINFORCED_DEEPSLATE))) .build() )); this.registerable.register(ItemKeys.IRON_BARS, create( - ItemBase.Builder.forBlock(ItemKeys.IRON_BARS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.IRON_BARS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.IRON_BARS))) .build() )); this.registerable.register(ItemKeys.CHAIN, create( - ItemBase.Builder.forBlock(ItemKeys.CHAIN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHAIN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHAIN))) .build() )); this.registerable.register(ItemKeys.GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.STONE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.MUD_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.MUD_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUD_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUD_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.MYCELIUM, create( - ItemBase.Builder.forBlock(ItemKeys.MYCELIUM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MYCELIUM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MYCELIUM))) .build() )); this.registerable.register(ItemKeys.NETHER_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_BRICKS))) .build() )); this.registerable.register(ItemKeys.CRACKED_NETHER_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CRACKED_NETHER_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRACKED_NETHER_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRACKED_NETHER_BRICKS))) .build() )); this.registerable.register(ItemKeys.CHISELED_NETHER_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_NETHER_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_NETHER_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_NETHER_BRICKS))) .build() )); this.registerable.register(ItemKeys.NETHER_BRICK_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_BRICK_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_BRICK_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_BRICK_FENCE))) .build() )); this.registerable.register(ItemKeys.NETHER_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.SCULK, create( - ItemBase.Builder.forBlock(ItemKeys.SCULK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCULK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCULK))) .build() )); this.registerable.register(ItemKeys.SCULK_VEIN, create( - ItemBase.Builder.forBlock(ItemKeys.SCULK_VEIN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCULK_VEIN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCULK_VEIN))) .build() )); this.registerable.register(ItemKeys.SCULK_CATALYST, create( - ItemBase.Builder.forBlock(ItemKeys.SCULK_CATALYST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCULK_CATALYST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCULK_CATALYST))) .build() )); this.registerable.register(ItemKeys.SCULK_SHRIEKER, create( - ItemBase.Builder.forBlock(ItemKeys.SCULK_SHRIEKER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCULK_SHRIEKER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCULK_SHRIEKER))) .build() )); this.registerable.register(ItemKeys.ENCHANTING_TABLE, create( - ItemBase.Builder.forBlock(ItemKeys.ENCHANTING_TABLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ENCHANTING_TABLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ENCHANTING_TABLE))) .build() )); this.registerable.register(ItemKeys.END_PORTAL_FRAME, create( - ItemBase.Builder.forBlock(ItemKeys.END_PORTAL_FRAME).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_PORTAL_FRAME).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_PORTAL_FRAME))) .build() )); this.registerable.register(ItemKeys.END_STONE, create( - ItemBase.Builder.forBlock(ItemKeys.END_STONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_STONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_STONE))) .build() )); this.registerable.register(ItemKeys.END_STONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.END_STONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_STONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_STONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.DRAGON_EGG, create( - ItemBase.Builder.forBlock(ItemKeys.DRAGON_EGG) + ItemDisplay.Builder.forBlock(ItemKeys.DRAGON_EGG) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -2287,42 +2286,42 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.SANDSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.SANDSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SANDSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SANDSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.ENDER_CHEST, create( - ItemBase.Builder.forBlock(ItemKeys.ENDER_CHEST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ENDER_CHEST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ENDER_CHEST))) .build() )); this.registerable.register(ItemKeys.EMERALD_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.EMERALD_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EMERALD_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EMERALD_BLOCK))) .build() )); this.registerable.register(ItemKeys.CRIMSON_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_STAIRS))) .build() )); this.registerable.register(ItemKeys.WARPED_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_STAIRS))) .build() )); this.registerable.register(ItemKeys.BEACON, create( - ItemBase.Builder.forBlock(ItemKeys.BEACON) + ItemDisplay.Builder.forBlock(ItemKeys.BEACON) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -2331,217 +2330,217 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.COBBLESTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLESTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLESTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLESTONE_WALL))) .build() )); this.registerable.register(ItemKeys.MOSSY_COBBLESTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_COBBLESTONE_WALL))) .build() )); this.registerable.register(ItemKeys.BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_WALL))) .build() )); this.registerable.register(ItemKeys.RED_SANDSTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SANDSTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SANDSTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SANDSTONE_WALL))) .build() )); this.registerable.register(ItemKeys.MOSSY_STONE_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_STONE_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.GRANITE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.GRANITE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRANITE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRANITE_WALL))) .build() )); this.registerable.register(ItemKeys.STONE_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.MUD_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.MUD_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUD_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUD_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.NETHER_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.ANDESITE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.ANDESITE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANDESITE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANDESITE_WALL))) .build() )); this.registerable.register(ItemKeys.RED_NETHER_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_NETHER_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.SANDSTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.SANDSTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SANDSTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SANDSTONE_WALL))) .build() )); this.registerable.register(ItemKeys.END_STONE_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.END_STONE_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_STONE_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_STONE_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.DIORITE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.DIORITE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIORITE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIORITE_WALL))) .build() )); this.registerable.register(ItemKeys.BLACKSTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.BLACKSTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACKSTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACKSTONE_WALL))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_WALL))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.COBBLED_DEEPSLATE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLED_DEEPSLATE_WALL))) .build() )); this.registerable.register(ItemKeys.POLISHED_DEEPSLATE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DEEPSLATE_WALL))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_BRICK_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_BRICK_WALL))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_TILE_WALL, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_WALL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_WALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_TILE_WALL))) .build() )); this.registerable.register(ItemKeys.ANVIL, create( - ItemBase.Builder.forBlock(ItemKeys.ANVIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANVIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANVIL))) .build() )); this.registerable.register(ItemKeys.CHIPPED_ANVIL, create( - ItemBase.Builder.forBlock(ItemKeys.CHIPPED_ANVIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHIPPED_ANVIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHIPPED_ANVIL))) .build() )); this.registerable.register(ItemKeys.DAMAGED_ANVIL, create( - ItemBase.Builder.forBlock(ItemKeys.DAMAGED_ANVIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DAMAGED_ANVIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DAMAGED_ANVIL))) .build() )); this.registerable.register(ItemKeys.CHISELED_QUARTZ_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_QUARTZ_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_QUARTZ_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_QUARTZ_BLOCK))) .build() )); this.registerable.register(ItemKeys.QUARTZ_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.QUARTZ_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.QUARTZ_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.QUARTZ_BLOCK))) .build() )); this.registerable.register(ItemKeys.QUARTZ_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.QUARTZ_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.QUARTZ_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.QUARTZ_BRICKS))) .build() )); this.registerable.register(ItemKeys.QUARTZ_PILLAR, create( - ItemBase.Builder.forBlock(ItemKeys.QUARTZ_PILLAR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.QUARTZ_PILLAR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.QUARTZ_PILLAR))) .build() )); this.registerable.register(ItemKeys.QUARTZ_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.QUARTZ_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.QUARTZ_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.QUARTZ_STAIRS))) .build() )); this.registerable.register(ItemKeys.BARRIER, create( - ItemBase.Builder.forBlock(ItemKeys.BARRIER) + ItemDisplay.Builder.forBlock(ItemKeys.BARRIER) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -2550,7 +2549,7 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.LIGHT, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT) + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -2559,126 +2558,126 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.PACKED_ICE, create( - ItemBase.Builder.forBlock(ItemKeys.PACKED_ICE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PACKED_ICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PACKED_ICE))) .build() )); this.registerable.register(ItemKeys.DIRT_PATH, create( - ItemBase.Builder.forBlock(ItemKeys.DIRT_PATH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIRT_PATH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIRT_PATH))) .build() )); this.registerable.register(ItemKeys.PRISMARINE, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_BRICKS))) .build() )); this.registerable.register(ItemKeys.DARK_PRISMARINE, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_PRISMARINE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_PRISMARINE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_PRISMARINE))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_STAIRS))) .build() )); this.registerable.register(ItemKeys.PRISMARINE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.PRISMARINE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PRISMARINE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PRISMARINE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.DARK_PRISMARINE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_PRISMARINE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_PRISMARINE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_PRISMARINE_STAIRS))) .build() )); this.registerable.register(ItemKeys.SEA_LANTERN, create( - ItemBase.Builder.forBlock(ItemKeys.SEA_LANTERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SEA_LANTERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SEA_LANTERN))) .build() )); this.registerable.register(ItemKeys.RED_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.CHISELED_RED_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_RED_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_RED_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_RED_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.CUT_RED_SANDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.CUT_RED_SANDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CUT_RED_SANDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CUT_RED_SANDSTONE))) .build() )); this.registerable.register(ItemKeys.RED_SANDSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SANDSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SANDSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SANDSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.MAGMA_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.MAGMA_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGMA_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGMA_BLOCK))) .build() )); this.registerable.register(ItemKeys.RED_NETHER_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.RED_NETHER_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_NETHER_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_NETHER_BRICKS))) .build() )); this.registerable.register(ItemKeys.BONE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.BONE_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BONE_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BONE_BLOCK))) .build() )); this.registerable.register(ItemKeys.STRUCTURE_VOID, create( - ItemBase.Builder.forBlock(ItemKeys.STRUCTURE_VOID) + ItemDisplay.Builder.forBlock(ItemKeys.STRUCTURE_VOID) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -2687,14 +2686,14 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.TURTLE_EGG, create( - ItemBase.Builder.forBlock(ItemKeys.TURTLE_EGG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TURTLE_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TURTLE_EGG))) .build() )); this.registerable.register(ItemKeys.SNIFFER_EGG, create( - ItemBase.Builder.forBlock(ItemKeys.SNIFFER_EGG) + ItemDisplay.Builder.forBlock(ItemKeys.SNIFFER_EGG) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -2703,154 +2702,154 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.DEAD_TUBE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_TUBE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.DEAD_BRAIN_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_BRAIN_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.DEAD_BUBBLE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_BUBBLE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.DEAD_FIRE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_FIRE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.DEAD_HORN_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_HORN_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.TUBE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.TUBE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUBE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUBE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.BRAIN_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.BRAIN_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRAIN_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRAIN_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.BUBBLE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.BUBBLE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BUBBLE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BUBBLE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.FIRE_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.FIRE_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FIRE_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FIRE_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.HORN_CORAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.HORN_CORAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HORN_CORAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HORN_CORAL_BLOCK))) .build() )); this.registerable.register(ItemKeys.TUBE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.TUBE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUBE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TUBE_CORAL))) .build() )); this.registerable.register(ItemKeys.BRAIN_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.BRAIN_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRAIN_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BRAIN_CORAL))) .build() )); this.registerable.register(ItemKeys.BUBBLE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.BUBBLE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BUBBLE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BUBBLE_CORAL))) .build() )); this.registerable.register(ItemKeys.FIRE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.FIRE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FIRE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FIRE_CORAL))) .build() )); this.registerable.register(ItemKeys.HORN_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.HORN_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HORN_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HORN_CORAL))) .build() )); this.registerable.register(ItemKeys.DEAD_BRAIN_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_BRAIN_CORAL))) .build() )); this.registerable.register(ItemKeys.DEAD_BUBBLE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_BUBBLE_CORAL))) .build() )); this.registerable.register(ItemKeys.DEAD_FIRE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_FIRE_CORAL))) .build() )); this.registerable.register(ItemKeys.DEAD_HORN_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_HORN_CORAL))) .build() )); this.registerable.register(ItemKeys.DEAD_TUBE_CORAL, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_TUBE_CORAL))) .build() )); this.registerable.register(ItemKeys.BLUE_ICE, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_ICE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_ICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_ICE))) .build() )); this.registerable.register(ItemKeys.CONDUIT, create( - ItemBase.Builder.forBlock(ItemKeys.CONDUIT) + ItemDisplay.Builder.forBlock(ItemKeys.CONDUIT) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -2859,371 +2858,371 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.POLISHED_GRANITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_GRANITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_GRANITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_GRANITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.SMOOTH_RED_SANDSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_RED_SANDSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.MOSSY_STONE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_STONE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.POLISHED_DIORITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DIORITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DIORITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DIORITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.MOSSY_COBBLESTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_COBBLESTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.END_STONE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.END_STONE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_STONE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_STONE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.STONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.SMOOTH_SANDSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_SANDSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.SMOOTH_QUARTZ_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_QUARTZ_STAIRS))) .build() )); this.registerable.register(ItemKeys.GRANITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.GRANITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRANITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRANITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.ANDESITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.ANDESITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANDESITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANDESITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.RED_NETHER_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_NETHER_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.POLISHED_ANDESITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_ANDESITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_ANDESITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_ANDESITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.DIORITE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.DIORITE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIORITE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIORITE_STAIRS))) .build() )); this.registerable.register(ItemKeys.COBBLED_DEEPSLATE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLED_DEEPSLATE_STAIRS))) .build() )); this.registerable.register(ItemKeys.POLISHED_DEEPSLATE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DEEPSLATE_STAIRS))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_TILE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_TILE_STAIRS))) .build() )); this.registerable.register(ItemKeys.POLISHED_GRANITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_GRANITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_GRANITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_GRANITE_SLAB))) .build() )); this.registerable.register(ItemKeys.SMOOTH_RED_SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_RED_SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_RED_SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.MOSSY_STONE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_STONE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_STONE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_DIORITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DIORITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DIORITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DIORITE_SLAB))) .build() )); this.registerable.register(ItemKeys.MOSSY_COBBLESTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSSY_COBBLESTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSSY_COBBLESTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.END_STONE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.END_STONE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.END_STONE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.END_STONE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.SMOOTH_SANDSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_SANDSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_SANDSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.SMOOTH_QUARTZ_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOOTH_QUARTZ_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOOTH_QUARTZ_SLAB))) .build() )); this.registerable.register(ItemKeys.GRANITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.GRANITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRANITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRANITE_SLAB))) .build() )); this.registerable.register(ItemKeys.ANDESITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.ANDESITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANDESITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANDESITE_SLAB))) .build() )); this.registerable.register(ItemKeys.RED_NETHER_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_NETHER_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_NETHER_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_ANDESITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_ANDESITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_ANDESITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_ANDESITE_SLAB))) .build() )); this.registerable.register(ItemKeys.DIORITE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.DIORITE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DIORITE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DIORITE_SLAB))) .build() )); this.registerable.register(ItemKeys.COBBLED_DEEPSLATE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COBBLED_DEEPSLATE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COBBLED_DEEPSLATE_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_DEEPSLATE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_DEEPSLATE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_DEEPSLATE_SLAB))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.DEEPSLATE_TILE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEEPSLATE_TILE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEEPSLATE_TILE_SLAB))) .build() )); this.registerable.register(ItemKeys.REDSTONE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.REDSTONE_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REDSTONE_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REDSTONE_BLOCK))) .build() )); this.registerable.register(ItemKeys.REPEATER, create( - ItemBase.Builder.forBlock(ItemKeys.REPEATER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REPEATER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REPEATER))) .build() )); this.registerable.register(ItemKeys.COMPARATOR, create( - ItemBase.Builder.forBlock(ItemKeys.COMPARATOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COMPARATOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COMPARATOR))) .build() )); this.registerable.register(ItemKeys.PISTON, create( - ItemBase.Builder.forBlock(ItemKeys.PISTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PISTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PISTON))) .build() )); this.registerable.register(ItemKeys.STICKY_PISTON, create( - ItemBase.Builder.forBlock(ItemKeys.STICKY_PISTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STICKY_PISTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STICKY_PISTON))) .build() )); this.registerable.register(ItemKeys.SLIME_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.SLIME_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SLIME_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SLIME_BLOCK))) .build() )); this.registerable.register(ItemKeys.HONEY_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.HONEY_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HONEY_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HONEY_BLOCK))) .build() )); this.registerable.register(ItemKeys.OBSERVER, create( - ItemBase.Builder.forBlock(ItemKeys.OBSERVER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OBSERVER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OBSERVER))) .build() )); this.registerable.register(ItemKeys.HOPPER, create( - ItemBase.Builder.forBlock(ItemKeys.HOPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HOPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HOPPER))) .build() )); this.registerable.register(ItemKeys.DISPENSER, create( - ItemBase.Builder.forBlock(ItemKeys.DISPENSER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DISPENSER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DISPENSER))) .build() )); this.registerable.register(ItemKeys.DROPPER, create( - ItemBase.Builder.forBlock(ItemKeys.DROPPER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DROPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DROPPER))) .build() )); this.registerable.register(ItemKeys.TARGET, create( - ItemBase.Builder.forBlock(ItemKeys.TARGET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TARGET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TARGET))) .build() )); this.registerable.register(ItemKeys.LEVER, create( - ItemBase.Builder.forBlock(ItemKeys.LEVER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LEVER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LEVER))) .build() )); this.registerable.register(ItemKeys.LIGHTNING_ROD, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHTNING_ROD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHTNING_ROD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHTNING_ROD))) .build() )); this.registerable.register(ItemKeys.SCULK_SENSOR, create( - ItemBase.Builder.forBlock(ItemKeys.SCULK_SENSOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCULK_SENSOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCULK_SENSOR))) .build() )); this.registerable.register(ItemKeys.CALIBRATED_SCULK_SENSOR, create( - ItemBase.Builder.forBlock(ItemKeys.CALIBRATED_SCULK_SENSOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CALIBRATED_SCULK_SENSOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CALIBRATED_SCULK_SENSOR))) .build() )); this.registerable.register(ItemKeys.TRIPWIRE_HOOK, create( - ItemBase.Builder.forBlock(ItemKeys.TRIPWIRE_HOOK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TRIPWIRE_HOOK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TRIPWIRE_HOOK))) .build() )); this.registerable.register(ItemKeys.TNT, create( - ItemBase.Builder.forBlock(ItemKeys.TNT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TNT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TNT))) @@ -3231,686 +3230,686 @@ private void bootstrapBlocks() { .build() )); this.registerable.register(ItemKeys.REDSTONE_LAMP, create( - ItemBase.Builder.forBlock(ItemKeys.REDSTONE_LAMP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REDSTONE_LAMP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REDSTONE_LAMP))) .build() )); this.registerable.register(ItemKeys.STONE_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_BUTTON))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_BUTTON))) .build() )); this.registerable.register(ItemKeys.CRIMSON_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_BUTTON))) .build() )); this.registerable.register(ItemKeys.WARPED_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_BUTTON))) .build() )); this.registerable.register(ItemKeys.STONE_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.STONE_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONE_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONE_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.LIGHT_WEIGHTED_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_WEIGHTED_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_WEIGHTED_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_WEIGHTED_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.HEAVY_WEIGHTED_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.HEAVY_WEIGHTED_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HEAVY_WEIGHTED_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HEAVY_WEIGHTED_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.CRIMSON_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.WARPED_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_PRESSURE_PLATE))) .build() )); this.registerable.register(ItemKeys.IRON_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.IRON_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.IRON_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.IRON_DOOR))) .build() )); this.registerable.register(ItemKeys.CRIMSON_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_DOOR))) .build() )); this.registerable.register(ItemKeys.WARPED_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_DOOR))) .build() )); this.registerable.register(ItemKeys.COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.EXPOSED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.WEATHERED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_COPPER_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_COPPER_DOOR))) .build() )); this.registerable.register(ItemKeys.IRON_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.IRON_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.IRON_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.IRON_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.CRIMSON_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WARPED_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.EXPOSED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WEATHERED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR))) .build() )); this.registerable.register(ItemKeys.CRIMSON_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_FENCE_GATE))) .build() )); this.registerable.register(ItemKeys.WARPED_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_FENCE_GATE))) .build() )); this.registerable.register(ItemKeys.POWERED_RAIL, create( - ItemBase.Builder.forBlock(ItemKeys.POWERED_RAIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POWERED_RAIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POWERED_RAIL))) .build() )); this.registerable.register(ItemKeys.DETECTOR_RAIL, create( - ItemBase.Builder.forBlock(ItemKeys.DETECTOR_RAIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DETECTOR_RAIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DETECTOR_RAIL))) .build() )); this.registerable.register(ItemKeys.RAIL, create( - ItemBase.Builder.forBlock(ItemKeys.RAIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RAIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RAIL))) .build() )); this.registerable.register(ItemKeys.ACTIVATOR_RAIL, create( - ItemBase.Builder.forBlock(ItemKeys.ACTIVATOR_RAIL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACTIVATOR_RAIL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACTIVATOR_RAIL))) .build() )); this.registerable.register(ItemKeys.BREWING_STAND, create( - ItemBase.Builder.forBlock(ItemKeys.BREWING_STAND).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BREWING_STAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BREWING_STAND))) .build() )); this.registerable.register(ItemKeys.CAULDRON, create( - ItemBase.Builder.forBlock(ItemKeys.CAULDRON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CAULDRON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CAULDRON))) .build() )); this.registerable.register(ItemKeys.FLOWER_POT, create( - ItemBase.Builder.forBlock(ItemKeys.FLOWER_POT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FLOWER_POT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FLOWER_POT))) .build() )); this.registerable.register(ItemKeys.SMOKER, create( - ItemBase.Builder.forBlock(ItemKeys.SMOKER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMOKER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMOKER))) .build() )); this.registerable.register(ItemKeys.BLAST_FURNACE, create( - ItemBase.Builder.forBlock(ItemKeys.BLAST_FURNACE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLAST_FURNACE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLAST_FURNACE))) .build() )); this.registerable.register(ItemKeys.GRINDSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.GRINDSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRINDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRINDSTONE))) .build() )); this.registerable.register(ItemKeys.STONECUTTER, create( - ItemBase.Builder.forBlock(ItemKeys.STONECUTTER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STONECUTTER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STONECUTTER))) .build() )); this.registerable.register(ItemKeys.BELL, create( - ItemBase.Builder.forBlock(ItemKeys.BELL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BELL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BELL))) .build() )); this.registerable.register(ItemKeys.LANTERN, create( - ItemBase.Builder.forBlock(ItemKeys.LANTERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LANTERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LANTERN))) .build() )); this.registerable.register(ItemKeys.SOUL_LANTERN, create( - ItemBase.Builder.forBlock(ItemKeys.SOUL_LANTERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SOUL_LANTERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SOUL_LANTERN))) .build() )); this.registerable.register(ItemKeys.CAMPFIRE, create( - ItemBase.Builder.forBlock(ItemKeys.CAMPFIRE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CAMPFIRE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CAMPFIRE))) .build() )); this.registerable.register(ItemKeys.SOUL_CAMPFIRE, create( - ItemBase.Builder.forBlock(ItemKeys.SOUL_CAMPFIRE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SOUL_CAMPFIRE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SOUL_CAMPFIRE))) .build() )); this.registerable.register(ItemKeys.BEE_NEST, create( - ItemBase.Builder.forBlock(ItemKeys.BEE_NEST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BEE_NEST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BEE_NEST))) .build() )); this.registerable.register(ItemKeys.BEEHIVE, create( - ItemBase.Builder.forBlock(ItemKeys.BEEHIVE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BEEHIVE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BEEHIVE))) .build() )); this.registerable.register(ItemKeys.HONEYCOMB_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.HONEYCOMB_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HONEYCOMB_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HONEYCOMB_BLOCK))) .build() )); this.registerable.register(ItemKeys.LODESTONE, create( - ItemBase.Builder.forBlock(ItemKeys.LODESTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LODESTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LODESTONE))) .build() )); this.registerable.register(ItemKeys.CRYING_OBSIDIAN, create( - ItemBase.Builder.forBlock(ItemKeys.CRYING_OBSIDIAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRYING_OBSIDIAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRYING_OBSIDIAN))) .build() )); this.registerable.register(ItemKeys.BLACKSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.BLACKSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACKSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACKSTONE))) .build() )); this.registerable.register(ItemKeys.BLACKSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.BLACKSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACKSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACKSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.BLACKSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.BLACKSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACKSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACKSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.GILDED_BLACKSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.GILDED_BLACKSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GILDED_BLACKSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GILDED_BLACKSTONE))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_STAIRS))) .build() )); this.registerable.register(ItemKeys.CHISELED_POLISHED_BLACKSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_POLISHED_BLACKSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_POLISHED_BLACKSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_POLISHED_BLACKSTONE))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_BRICK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_BRICK_SLAB))) .build() )); this.registerable.register(ItemKeys.POLISHED_BLACKSTONE_BRICK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POLISHED_BLACKSTONE_BRICK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POLISHED_BLACKSTONE_BRICK_STAIRS))) .build() )); this.registerable.register(ItemKeys.CRACKED_POLISHED_BLACKSTONE_BRICKS, create( - ItemBase.Builder.forBlock(ItemKeys.CRACKED_POLISHED_BLACKSTONE_BRICKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRACKED_POLISHED_BLACKSTONE_BRICKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRACKED_POLISHED_BLACKSTONE_BRICKS))) .build() )); this.registerable.register(ItemKeys.RESPAWN_ANCHOR, create( - ItemBase.Builder.forBlock(ItemKeys.RESPAWN_ANCHOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RESPAWN_ANCHOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RESPAWN_ANCHOR))) .build() )); this.registerable.register(ItemKeys.CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CANDLE))) .build() )); this.registerable.register(ItemKeys.SMALL_AMETHYST_BUD, create( - ItemBase.Builder.forBlock(ItemKeys.SMALL_AMETHYST_BUD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMALL_AMETHYST_BUD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMALL_AMETHYST_BUD))) .build() )); this.registerable.register(ItemKeys.MEDIUM_AMETHYST_BUD, create( - ItemBase.Builder.forBlock(ItemKeys.MEDIUM_AMETHYST_BUD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MEDIUM_AMETHYST_BUD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MEDIUM_AMETHYST_BUD))) .build() )); this.registerable.register(ItemKeys.LARGE_AMETHYST_BUD, create( - ItemBase.Builder.forBlock(ItemKeys.LARGE_AMETHYST_BUD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LARGE_AMETHYST_BUD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LARGE_AMETHYST_BUD))) .build() )); this.registerable.register(ItemKeys.AMETHYST_CLUSTER, create( - ItemBase.Builder.forBlock(ItemKeys.AMETHYST_CLUSTER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.AMETHYST_CLUSTER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.AMETHYST_CLUSTER))) .build() )); this.registerable.register(ItemKeys.POINTED_DRIPSTONE, create( - ItemBase.Builder.forBlock(ItemKeys.POINTED_DRIPSTONE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POINTED_DRIPSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POINTED_DRIPSTONE))) .build() )); this.registerable.register(ItemKeys.OCHRE_FROGLIGHT, create( - ItemBase.Builder.forBlock(ItemKeys.OCHRE_FROGLIGHT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OCHRE_FROGLIGHT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OCHRE_FROGLIGHT))) .build() )); this.registerable.register(ItemKeys.VERDANT_FROGLIGHT, create( - ItemBase.Builder.forBlock(ItemKeys.VERDANT_FROGLIGHT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.VERDANT_FROGLIGHT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.VERDANT_FROGLIGHT))) .build() )); this.registerable.register(ItemKeys.PEARLESCENT_FROGLIGHT, create( - ItemBase.Builder.forBlock(ItemKeys.PEARLESCENT_FROGLIGHT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PEARLESCENT_FROGLIGHT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PEARLESCENT_FROGLIGHT))) .build() )); this.registerable.register(ItemKeys.FROGSPAWN, create( - ItemBase.Builder.forBlock(ItemKeys.FROGSPAWN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FROGSPAWN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FROGSPAWN), BlockItemComponent.Pass.FLUID)) .build() )); this.registerable.register(ItemKeys.COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.EXPOSED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.WEATHERED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.WAXED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_COPPER_GRATE, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_GRATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_GRATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_COPPER_GRATE))) .build() )); this.registerable.register(ItemKeys.COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.EXPOSED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.EXPOSED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.EXPOSED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.EXPOSED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.WEATHERED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.WEATHERED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEATHERED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEATHERED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.OXIDIZED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXIDIZED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXIDIZED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.WAXED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.WAXED_EXPOSED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_EXPOSED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_EXPOSED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.WAXED_WEATHERED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_WEATHERED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_WEATHERED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.WAXED_OXIDIZED_COPPER_BULB, create( - ItemBase.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_BULB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WAXED_OXIDIZED_COPPER_BULB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WAXED_OXIDIZED_COPPER_BULB))) .build() )); this.registerable.register(ItemKeys.TRIAL_SPAWNER, create( - ItemBase.Builder.forBlock(ItemKeys.TRIAL_SPAWNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TRIAL_SPAWNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TRIAL_SPAWNER))) .build() )); this.registerable.register(ItemKeys.VAULT, create( - ItemBase.Builder.forBlock(ItemKeys.VAULT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.VAULT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.VAULT))) .build() )); this.registerable.register(ItemKeys.CRAFTER, create( - ItemBase.Builder.forBlock(ItemKeys.CRAFTER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRAFTER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRAFTER))) @@ -3920,119 +3919,119 @@ private void bootstrapBlocks() { private void bootstrapAttachedToSideBlocks() { this.registerable.register(ItemKeys.TORCH, create( - ItemBase.Builder.forBlock(ItemKeys.TORCH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TORCH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.TORCH), this.blocks.getOrThrow(BlockKeys.WALL_TORCH), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.SOUL_TORCH, create( - ItemBase.Builder.forBlock(ItemKeys.SOUL_TORCH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SOUL_TORCH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.SOUL_TORCH), this.blocks.getOrThrow(BlockKeys.SOUL_WALL_TORCH), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.TUBE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.TUBE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TUBE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.TUBE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.TUBE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.BRAIN_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.BRAIN_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BRAIN_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BRAIN_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.BRAIN_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.BUBBLE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.BUBBLE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BUBBLE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BUBBLE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.BUBBLE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.FIRE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.FIRE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FIRE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.FIRE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.FIRE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.HORN_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.HORN_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HORN_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.HORN_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.HORN_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.DEAD_TUBE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_TUBE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DEAD_TUBE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.DEAD_TUBE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.DEAD_BRAIN_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BRAIN_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DEAD_BRAIN_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.DEAD_BRAIN_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.DEAD_BUBBLE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BUBBLE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DEAD_BUBBLE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.DEAD_BUBBLE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.DEAD_FIRE_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_FIRE_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DEAD_FIRE_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.DEAD_FIRE_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.DEAD_HORN_CORAL_FAN, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL_FAN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_HORN_CORAL_FAN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DEAD_HORN_CORAL_FAN), this.blocks.getOrThrow(BlockKeys.DEAD_HORN_CORAL_WALL_FAN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.REDSTONE_TORCH, create( - ItemBase.Builder.forBlock(ItemKeys.REDSTONE_TORCH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.REDSTONE_TORCH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.REDSTONE_TORCH), this.blocks.getOrThrow(BlockKeys.REDSTONE_WALL_TORCH), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.CRIMSON_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.CRIMSON_SIGN), this.blocks.getOrThrow(BlockKeys.CRIMSON_WALL_SIGN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.WARPED_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.WARPED_SIGN), this.blocks.getOrThrow(BlockKeys.WARPED_WALL_SIGN), Direction.DOWN)) .build() )); this.registerable.register(ItemKeys.CRIMSON_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.CRIMSON_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.CRIMSON_WALL_HANGING_SIGN), Direction.UP)) .build() )); this.registerable.register(ItemKeys.WARPED_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.WARPED_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.WARPED_WALL_HANGING_SIGN), Direction.UP)) @@ -4043,896 +4042,896 @@ private void bootstrapAttachedToSideBlocks() { private void bootstrapColoredBlocks() { this.bootstrapShulkerBoxes(); this.registerable.register(ItemKeys.WHITE_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.ORANGE_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.MAGENTA_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.YELLOW_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIME_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.PINK_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.GRAY_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.CYAN_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.PURPLE_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BLUE_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BROWN_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.GREEN_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.RED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.RED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BLACK_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.WHITE_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.ORANGE_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.MAGENTA_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.YELLOW_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.LIME_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.PINK_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.GRAY_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.CYAN_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.PURPLE_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.BLUE_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.BROWN_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.GREEN_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.RED_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.RED_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.BLACK_STAINED_GLASS, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_STAINED_GLASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_STAINED_GLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_STAINED_GLASS))) .build() )); this.registerable.register(ItemKeys.WHITE_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.ORANGE_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.MAGENTA_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.YELLOW_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.LIME_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.PINK_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.GRAY_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.CYAN_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.PURPLE_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.BLUE_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.BROWN_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.GREEN_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.RED_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.RED_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.BLACK_STAINED_GLASS_PANE, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_STAINED_GLASS_PANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_STAINED_GLASS_PANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_STAINED_GLASS_PANE))) .build() )); this.registerable.register(ItemKeys.WHITE_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.ORANGE_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.MAGENTA_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.YELLOW_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIME_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.PINK_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.GRAY_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.CYAN_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.PURPLE_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BLUE_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BROWN_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.GREEN_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.RED_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.RED_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.BLACK_GLAZED_TERRACOTTA, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_GLAZED_TERRACOTTA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_GLAZED_TERRACOTTA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_GLAZED_TERRACOTTA))) .build() )); this.registerable.register(ItemKeys.WHITE_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_CONCRETE))) .build() )); this.registerable.register(ItemKeys.ORANGE_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_CONCRETE))) .build() )); this.registerable.register(ItemKeys.MAGENTA_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_CONCRETE))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_CONCRETE))) .build() )); this.registerable.register(ItemKeys.YELLOW_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_CONCRETE))) .build() )); this.registerable.register(ItemKeys.LIME_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_CONCRETE))) .build() )); this.registerable.register(ItemKeys.PINK_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_CONCRETE))) .build() )); this.registerable.register(ItemKeys.GRAY_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_CONCRETE))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_CONCRETE))) .build() )); this.registerable.register(ItemKeys.CYAN_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_CONCRETE))) .build() )); this.registerable.register(ItemKeys.PURPLE_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_CONCRETE))) .build() )); this.registerable.register(ItemKeys.BLUE_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_CONCRETE))) .build() )); this.registerable.register(ItemKeys.BROWN_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_CONCRETE))) .build() )); this.registerable.register(ItemKeys.GREEN_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_CONCRETE))) .build() )); this.registerable.register(ItemKeys.RED_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.RED_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_CONCRETE))) .build() )); this.registerable.register(ItemKeys.BLACK_CONCRETE, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_CONCRETE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_CONCRETE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_CONCRETE))) .build() )); this.registerable.register(ItemKeys.WHITE_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.ORANGE_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.MAGENTA_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.YELLOW_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.LIME_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.PINK_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.GRAY_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.CYAN_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.PURPLE_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.BLUE_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.BROWN_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.GREEN_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.RED_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.RED_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.BLACK_CONCRETE_POWDER, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_CONCRETE_POWDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_CONCRETE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_CONCRETE_POWDER))) .build() )); this.registerable.register(ItemKeys.WHITE_BED, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_BED))) .build() )); this.registerable.register(ItemKeys.ORANGE_BED, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_BED))) .build() )); this.registerable.register(ItemKeys.MAGENTA_BED, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_BED))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_BED, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_BED))) .build() )); this.registerable.register(ItemKeys.YELLOW_BED, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_BED))) .build() )); this.registerable.register(ItemKeys.LIME_BED, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_BED))) .build() )); this.registerable.register(ItemKeys.PINK_BED, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_BED))) .build() )); this.registerable.register(ItemKeys.GRAY_BED, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_BED))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_BED, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_BED))) .build() )); this.registerable.register(ItemKeys.CYAN_BED, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_BED))) .build() )); this.registerable.register(ItemKeys.PURPLE_BED, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_BED))) .build() )); this.registerable.register(ItemKeys.BLUE_BED, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_BED))) .build() )); this.registerable.register(ItemKeys.BROWN_BED, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_BED))) .build() )); this.registerable.register(ItemKeys.GREEN_BED, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_BED))) .build() )); this.registerable.register(ItemKeys.RED_BED, create( - ItemBase.Builder.forBlock(ItemKeys.RED_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_BED))) .build() )); this.registerable.register(ItemKeys.BLACK_BED, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_BED).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_BED).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_BED))) .build() )); this.registerable.register(ItemKeys.WHITE_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_CANDLE))) .build() )); this.registerable.register(ItemKeys.ORANGE_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_CANDLE))) .build() )); this.registerable.register(ItemKeys.MAGENTA_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_CANDLE))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_CANDLE))) .build() )); this.registerable.register(ItemKeys.YELLOW_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_CANDLE))) .build() )); this.registerable.register(ItemKeys.LIME_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_CANDLE))) .build() )); this.registerable.register(ItemKeys.PINK_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_CANDLE))) .build() )); this.registerable.register(ItemKeys.GRAY_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_CANDLE))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_CANDLE))) .build() )); this.registerable.register(ItemKeys.CYAN_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_CANDLE))) .build() )); this.registerable.register(ItemKeys.PURPLE_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_CANDLE))) .build() )); this.registerable.register(ItemKeys.BLUE_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_CANDLE))) .build() )); this.registerable.register(ItemKeys.BROWN_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_CANDLE))) .build() )); this.registerable.register(ItemKeys.GREEN_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_CANDLE))) .build() )); this.registerable.register(ItemKeys.RED_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.RED_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_CANDLE))) .build() )); this.registerable.register(ItemKeys.BLACK_CANDLE, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_CANDLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_CANDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_CANDLE))) @@ -4942,7 +4941,7 @@ private void bootstrapColoredBlocks() { private void bootstrapShulkerBoxes() { this.registerable.register(ItemKeys.SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SHULKER_BOX))) @@ -4950,7 +4949,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.WHITE_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_SHULKER_BOX))) @@ -4958,7 +4957,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.ORANGE_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_SHULKER_BOX))) @@ -4966,7 +4965,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.MAGENTA_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_SHULKER_BOX))) @@ -4974,7 +4973,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_SHULKER_BOX))) @@ -4982,7 +4981,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.YELLOW_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_SHULKER_BOX))) @@ -4990,7 +4989,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.LIME_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_SHULKER_BOX))) @@ -4998,7 +4997,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.PINK_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_SHULKER_BOX))) @@ -5006,7 +5005,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.GRAY_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_SHULKER_BOX))) @@ -5014,7 +5013,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_SHULKER_BOX))) @@ -5022,7 +5021,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.CYAN_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_SHULKER_BOX))) @@ -5030,7 +5029,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.PURPLE_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_SHULKER_BOX))) @@ -5038,7 +5037,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.BLUE_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_SHULKER_BOX))) @@ -5046,7 +5045,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.BROWN_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_SHULKER_BOX))) @@ -5054,7 +5053,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.GREEN_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_SHULKER_BOX))) @@ -5062,7 +5061,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.RED_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.RED_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_SHULKER_BOX))) @@ -5070,7 +5069,7 @@ private void bootstrapShulkerBoxes() { .build() )); this.registerable.register(ItemKeys.BLACK_SHULKER_BOX, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_SHULKER_BOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_SHULKER_BOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_SHULKER_BOX))) @@ -5081,14 +5080,14 @@ private void bootstrapShulkerBoxes() { private void bootstrapItemNameBlocks() { this.registerable.register(ItemKeys.REDSTONE, create( - ItemBase.Builder.forItem(ItemKeys.REDSTONE).build(), + ItemDisplay.Builder.forItem(ItemKeys.REDSTONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.REDSTONE_WIRE))) .build() )); this.registerable.register(ItemKeys.STRING, create( - ItemBase.Builder.forItem(ItemKeys.STRING).build(), + ItemDisplay.Builder.forItem(ItemKeys.STRING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TRIPWIRE))) @@ -5098,7 +5097,7 @@ private void bootstrapItemNameBlocks() { private void bootstrapOperatorOnlyBlocks() { this.registerable.register(ItemKeys.COMMAND_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.COMMAND_BLOCK) + ItemDisplay.Builder.forBlock(ItemKeys.COMMAND_BLOCK) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5107,7 +5106,7 @@ private void bootstrapOperatorOnlyBlocks() { .build() )); this.registerable.register(ItemKeys.REPEATING_COMMAND_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.REPEATING_COMMAND_BLOCK) + ItemDisplay.Builder.forBlock(ItemKeys.REPEATING_COMMAND_BLOCK) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5116,7 +5115,7 @@ private void bootstrapOperatorOnlyBlocks() { .build() )); this.registerable.register(ItemKeys.CHAIN_COMMAND_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.CHAIN_COMMAND_BLOCK) + ItemDisplay.Builder.forBlock(ItemKeys.CHAIN_COMMAND_BLOCK) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5125,7 +5124,7 @@ private void bootstrapOperatorOnlyBlocks() { .build() )); this.registerable.register(ItemKeys.STRUCTURE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.STRUCTURE_BLOCK) + ItemDisplay.Builder.forBlock(ItemKeys.STRUCTURE_BLOCK) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5134,7 +5133,7 @@ private void bootstrapOperatorOnlyBlocks() { .build() )); this.registerable.register(ItemKeys.JIGSAW, create( - ItemBase.Builder.forBlock(ItemKeys.JIGSAW) + ItemDisplay.Builder.forBlock(ItemKeys.JIGSAW) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5146,14 +5145,14 @@ private void bootstrapOperatorOnlyBlocks() { private void bootstrapToolsAndWeapons() { this.registerable.register(ItemKeys.WOODEN_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.WOODEN_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOODEN_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.WOODEN_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOODEN_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) @@ -5163,21 +5162,21 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.WOODEN_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.WOODEN_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOODEN_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.WOOD, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_AXE, create( - ItemBase.Builder.forItem(ItemKeys.WOODEN_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOODEN_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.WOOD, 7.0d, 0.2d, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.WOODEN_HOE, create( - ItemBase.Builder.forItem(ItemKeys.WOODEN_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOODEN_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.WOOD, 1.0d, 0.25d, this.items.getOrThrow(ItemTags.WOODEN_TOOL_MATERIALS))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.TOOL_FUEL_TIME)) @@ -5187,13 +5186,13 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.STONE_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.STONE_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.STONE_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.STONE_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.STONE_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build(), @@ -5202,19 +5201,19 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.STONE_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.STONE_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.STONE_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.STONE, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_AXE, create( - ItemBase.Builder.forItem(ItemKeys.STONE_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.STONE_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.STONE, 8.0d, 0.2d, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.STONE_HOE, create( - ItemBase.Builder.forItem(ItemKeys.STONE_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.STONE_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.STONE, 2.0d, 0.5d, this.items.getOrThrow(ItemTags.STONE_TOOL_MATERIALS))) .build(), @@ -5223,13 +5222,13 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.GOLDEN_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build(), @@ -5238,19 +5237,19 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.GOLDEN_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.GOLD, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_AXE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.GOLD, 7.0d, 0.25d, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.GOLDEN_HOE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.GOLD, 1.0d, 0.25d, this.items.getOrThrow(ItemTags.GOLD_TOOL_MATERIALS))) .build(), @@ -5259,13 +5258,13 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.IRON_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.IRON_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.IRON_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build(), @@ -5274,19 +5273,19 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.IRON_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.IRON_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.IRON, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_AXE, create( - ItemBase.Builder.forItem(ItemKeys.IRON_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.IRON, 7.0d, 0.225d, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.IRON_HOE, create( - ItemBase.Builder.forItem(ItemKeys.IRON_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.IRON, 3.0d, 0.75d, this.items.getOrThrow(ItemTags.IRON_TOOL_MATERIALS))) .build(), @@ -5295,13 +5294,13 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.DIAMOND_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build(), @@ -5310,19 +5309,19 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.DIAMOND_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.DIAMOND, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_AXE, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.DIAMOND, 6.0d, 0.25d, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build() )); this.registerable.register(ItemKeys.DIAMOND_HOE, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.DIAMOND, 4.0d, 1.0d, this.items.getOrThrow(ItemTags.DIAMOND_TOOL_MATERIALS))) .build(), @@ -5331,14 +5330,14 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.NETHERITE_SWORD, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_SWORD).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_SWORD).build(), ItemComponentSet.builder() .with(DamageableItemComponent.sword(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_SHOVEL, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_SHOVEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_SHOVEL).build(), ItemComponentSet.builder() .with(DamageableItemComponent.shovel(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) @@ -5348,21 +5347,21 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.NETHERITE_PICKAXE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_PICKAXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_PICKAXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.pickaxe(this.blocks, ToolMaterial.NETHERITE, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_AXE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_AXE).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_AXE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.axe(this.blocks, ToolMaterial.NETHERITE, 6.0d, 0.25d, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_HOE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_HOE).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_HOE).build(), ItemComponentSet.builder() .with(DamageableItemComponent.hoe(this.blocks, ToolMaterial.NETHERITE, 5.0d, 1.0d, this.items.getOrThrow(ItemTags.NETHERITE_TOOL_MATERIALS))) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) @@ -5372,7 +5371,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.FISHING_ROD, create( - ItemBase.Builder.forItem(ItemKeys.FISHING_ROD).build(), + ItemDisplay.Builder.forItem(ItemKeys.FISHING_ROD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(CastableItemComponent.INSTANCE) @@ -5380,7 +5379,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.SHEARS, create( - ItemBase.Builder.forItem(ItemKeys.SHEARS).build(), + ItemDisplay.Builder.forItem(ItemKeys.SHEARS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(238)) @@ -5394,7 +5393,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.BOW, create( - ItemBase.Builder.forItem(ItemKeys.BOW).build(), + ItemDisplay.Builder.forItem(ItemKeys.BOW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(384)) @@ -5410,7 +5409,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.CROSSBOW, create( - ItemBase.Builder.forItem(ItemKeys.CROSSBOW).build(), + ItemDisplay.Builder.forItem(ItemKeys.CROSSBOW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(465)) @@ -5436,7 +5435,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.TRIDENT, create( - ItemBase.Builder.forItem(ItemKeys.TRIDENT) + ItemDisplay.Builder.forItem(ItemKeys.TRIDENT) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -5474,7 +5473,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.CARROT_ON_A_STICK, create( - ItemBase.Builder.forItem(ItemKeys.CARROT_ON_A_STICK).build(), + ItemDisplay.Builder.forItem(ItemKeys.CARROT_ON_A_STICK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(25)) @@ -5485,7 +5484,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.WARPED_FUNGUS_ON_A_STICK, create( - ItemBase.Builder.forItem(ItemKeys.WARPED_FUNGUS_ON_A_STICK).build(), + ItemDisplay.Builder.forItem(ItemKeys.WARPED_FUNGUS_ON_A_STICK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(100)) @@ -5496,7 +5495,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.FLINT_AND_STEEL, create( - ItemBase.Builder.forItem(ItemKeys.FLINT_AND_STEEL).build(), + ItemDisplay.Builder.forItem(ItemKeys.FLINT_AND_STEEL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.of(64)) @@ -5514,7 +5513,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.BRUSH, create( - ItemBase.Builder.forItem(ItemKeys.BRUSH).build(), + ItemDisplay.Builder.forItem(ItemKeys.BRUSH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BrushItemComponent.of(BrushItemAccessor.maxBrushTime())) @@ -5523,7 +5522,7 @@ private void bootstrapToolsAndWeapons() { .build() )); this.registerable.register(ItemKeys.MACE, create( - ItemBase.Builder.forItem(ItemKeys.MACE) + ItemDisplay.Builder.forItem(ItemKeys.MACE) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5542,42 +5541,42 @@ private void bootstrapToolsAndWeapons() { private void bootstrapEntities() { this.bootstrapSpawnEggs(); this.registerable.register(ItemKeys.MINECART, create( - ItemBase.Builder.forItem(ItemKeys.MINECART).build(), + ItemDisplay.Builder.forItem(ItemKeys.MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.MINECART, MinecartEntity::new), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CHEST_MINECART, create( - ItemBase.Builder.forItem(ItemKeys.CHEST_MINECART).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHEST_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.CHEST_MINECART, ChestMinecartEntity::new), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.FURNACE_MINECART, create( - ItemBase.Builder.forItem(ItemKeys.FURNACE_MINECART).build(), + ItemDisplay.Builder.forItem(ItemKeys.FURNACE_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.FURNACE_MINECART, FurnaceMinecartEntity::new), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TNT_MINECART, create( - ItemBase.Builder.forItem(ItemKeys.TNT_MINECART).build(), + ItemDisplay.Builder.forItem(ItemKeys.TNT_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.TNT_MINECART, TntMinecartEntity::new), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.HOPPER_MINECART, create( - ItemBase.Builder.forItem(ItemKeys.HOPPER_MINECART).build(), + ItemDisplay.Builder.forItem(ItemKeys.HOPPER_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.HOPPER_MINECART, HopperMinecartEntity::new), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.COMMAND_BLOCK_MINECART, create( - ItemBase.Builder.forItem(ItemKeys.COMMAND_BLOCK_MINECART) + ItemDisplay.Builder.forItem(ItemKeys.COMMAND_BLOCK_MINECART) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -5586,7 +5585,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.OAK_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.OAK_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.OAK_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.OAK), this.dispenseBehaviors)) @@ -5594,7 +5593,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.OAK_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.OAK_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.OAK_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.OAK), this.dispenseBehaviors)) @@ -5602,7 +5601,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.SPRUCE_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.SPRUCE_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPRUCE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.SPRUCE), this.dispenseBehaviors)) @@ -5610,7 +5609,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.SPRUCE_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.SPRUCE_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPRUCE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.SPRUCE), this.dispenseBehaviors)) @@ -5618,7 +5617,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.BIRCH_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.BIRCH_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.BIRCH_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.BIRCH), this.dispenseBehaviors)) @@ -5626,7 +5625,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.BIRCH_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.BIRCH_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.BIRCH_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.BIRCH), this.dispenseBehaviors)) @@ -5634,7 +5633,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.JUNGLE_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.JUNGLE_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.JUNGLE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.JUNGLE), this.dispenseBehaviors)) @@ -5642,7 +5641,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.JUNGLE_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.JUNGLE_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.JUNGLE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.JUNGLE), this.dispenseBehaviors)) @@ -5650,7 +5649,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.ACACIA_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.ACACIA_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.ACACIA_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.ACACIA), this.dispenseBehaviors)) @@ -5658,7 +5657,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.ACACIA_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.ACACIA_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.ACACIA_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.ACACIA), this.dispenseBehaviors)) @@ -5666,7 +5665,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.CHERRY_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.CHERRY_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHERRY_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.CHERRY), this.dispenseBehaviors)) @@ -5674,7 +5673,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.CHERRY_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.CHERRY_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHERRY_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.CHERRY), this.dispenseBehaviors)) @@ -5682,7 +5681,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.DARK_OAK_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.DARK_OAK_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.DARK_OAK), this.dispenseBehaviors)) @@ -5690,7 +5689,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.DARK_OAK_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.DARK_OAK_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.DARK_OAK), this.dispenseBehaviors)) @@ -5698,7 +5697,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.MANGROVE_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.MANGROVE_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.MANGROVE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.MANGROVE), this.dispenseBehaviors)) @@ -5706,7 +5705,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.MANGROVE_CHEST_BOAT, create( - ItemBase.Builder.forItem(ItemKeys.MANGROVE_CHEST_BOAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.MANGROVE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.MANGROVE), this.dispenseBehaviors)) @@ -5714,7 +5713,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.BAMBOO_RAFT, create( - ItemBase.Builder.forItem(ItemKeys.BAMBOO_RAFT).build(), + ItemDisplay.Builder.forItem(ItemKeys.BAMBOO_RAFT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.BAMBOO), this.dispenseBehaviors)) @@ -5722,7 +5721,7 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.BAMBOO_CHEST_RAFT, create( - ItemBase.Builder.forItem(ItemKeys.BAMBOO_CHEST_RAFT).build(), + ItemDisplay.Builder.forItem(ItemKeys.BAMBOO_CHEST_RAFT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.BAMBOO), this.dispenseBehaviors)) @@ -5730,35 +5729,35 @@ private void bootstrapEntities() { .build() )); this.registerable.register(ItemKeys.PAINTING, create( - ItemBase.Builder.forItem(ItemKeys.PAINTING).build(), + ItemDisplay.Builder.forItem(ItemKeys.PAINTING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(EntityItemComponent.of(DecorationEntityInitializer.createPainting(EntityType.PAINTING))) .build() )); this.registerable.register(ItemKeys.ITEM_FRAME, create( - ItemBase.Builder.forItem(ItemKeys.ITEM_FRAME).build(), + ItemDisplay.Builder.forItem(ItemKeys.ITEM_FRAME).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(EntityItemComponent.of(DecorationEntityInitializer.createItemFrame(EntityType.ITEM_FRAME, ItemFrameEntity::new))) .build() )); this.registerable.register(ItemKeys.GLOW_ITEM_FRAME, create( - ItemBase.Builder.forItem(ItemKeys.GLOW_ITEM_FRAME).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOW_ITEM_FRAME).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(EntityItemComponent.of(DecorationEntityInitializer.createItemFrame(EntityType.GLOW_ITEM_FRAME, GlowItemFrameEntity::new))) .build() )); this.registerable.register(ItemKeys.ARMOR_STAND, create( - ItemBase.Builder.forItem(ItemKeys.ARMOR_STAND).build(), + ItemDisplay.Builder.forItem(ItemKeys.ARMOR_STAND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(EntityItemComponent.from(new ArmorStandEntityInitializer(), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.END_CRYSTAL, create( - ItemBase.Builder.forItem(ItemKeys.END_CRYSTAL) + ItemDisplay.Builder.forItem(ItemKeys.END_CRYSTAL) .glint() .build(), ItemComponentSet.builder() @@ -5770,560 +5769,560 @@ private void bootstrapEntities() { private void bootstrapSpawnEggs() { this.registerable.register(ItemKeys.ARMADILLO_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ARMADILLO_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ARMADILLO_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ARMADILLO), 0xad716d, 0x824848, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ALLAY_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ALLAY_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ALLAY_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ALLAY), 0x00daff, 0x00adff, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.AXOLOTL_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.AXOLOTL_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.AXOLOTL_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.AXOLOTL), 0xfbc1e3, 0xa62d74, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.BAT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.BAT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.BAT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.BAT), 0x4c3e30, 0x0f0f0f, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.BEE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.BEE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.BEE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.BEE), 0xedc343, 0x43241b, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.BLAZE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.BLAZE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.BLAZE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.BLAZE), 0xf6b201, 0xfff87e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.BOGGED_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.BOGGED_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.BOGGED_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.BOGGED), 0x8a9c72, 0x314d1b, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.BREEZE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.BREEZE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.BREEZE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.BREEZE), 0xaf94df, 0x9166df, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CAT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.CAT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.CAT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.CAT), 0xefc88e, 0x957256, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CAMEL_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.CAMEL_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.CAMEL_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.CAMEL), 0xfcc369, 0xcb9337, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CAVE_SPIDER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.CAVE_SPIDER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.CAVE_SPIDER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.CAVE_SPIDER), 0x0c424e, 0xa80e0e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CHICKEN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.CHICKEN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHICKEN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.CHICKEN), 0xa1a1a1, 0xff0000, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.COD_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.COD_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.COD_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.COD), 0xc1a76a, 0xe5c48b, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.COW_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.COW_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.COW_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.COW), 0x443626, 0xa1a1a1, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CREEPER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.CREEPER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.CREEPER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.CREEPER), 0x0da70b, 0x000000, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.DOLPHIN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.DOLPHIN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.DOLPHIN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.DOLPHIN), 0x223b4d, 0xf9f9f9, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.DONKEY_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.DONKEY_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.DONKEY_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.DONKEY), 0x534539, 0x867566, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.DROWNED_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.DROWNED_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.DROWNED_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.DROWNED), 0x8ff1d7, 0x799c65, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ELDER_GUARDIAN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ELDER_GUARDIAN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ELDER_GUARDIAN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ELDER_GUARDIAN), 0xceccba, 0x747693, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ENDER_DRAGON_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ENDER_DRAGON_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ENDER_DRAGON_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ENDER_DRAGON), 0x1c1c1c, 0xe079fa, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ENDERMAN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ENDERMAN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ENDERMAN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ENDERMAN), 0x161616, 0x000000, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ENDERMITE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ENDERMITE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ENDERMITE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ENDERMITE), 0x161616, 0x6e6e6e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.EVOKER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.EVOKER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.EVOKER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.EVOKER), 0x959b9b, 0x1e1c1a, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.FOX_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.FOX_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.FOX_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.FOX), 0xd5b69f, 0xcc6920, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.FROG_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.FROG_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.FROG_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.FROG), 0xd07444, 0xffc77c, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.GHAST_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.GHAST_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.GHAST_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.GHAST), 0xf9f9f9, 0xbcbcbc, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.GLOW_SQUID_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.GLOW_SQUID_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOW_SQUID_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.GLOW_SQUID), 0x095656, 0x85f1bc, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.GOAT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.GOAT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOAT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.GOAT), 0xa5947c, 0x55493e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.GUARDIAN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.GUARDIAN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.GUARDIAN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.GUARDIAN), 0x5a8272, 0xf17d30, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.HOGLIN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.HOGLIN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.HOGLIN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.HOGLIN), 0xc66e55, 0x5f6464, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.HORSE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.HORSE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.HORSE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.HORSE), 0xc09e7d, 0xeee500, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.HUSK_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.HUSK_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.HUSK_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.HUSK), 0x797061, 0xe6cc94, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.IRON_GOLEM_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.IRON_GOLEM_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_GOLEM_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.IRON_GOLEM), 0xdbcdc2, 0x74a332, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.LLAMA_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.LLAMA_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.LLAMA_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.LLAMA), 0xc09e7d, 0x995f40, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.MAGMA_CUBE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.MAGMA_CUBE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.MAGMA_CUBE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.MAGMA_CUBE), 0x340000, 0xfcfc00, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.MOOSHROOM_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.MOOSHROOM_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.MOOSHROOM_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.MOOSHROOM), 0xa00f10, 0xb7b7b7, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.MULE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.MULE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.MULE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.MULE), 0x1b0200, 0x51331d, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.OCELOT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.OCELOT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.OCELOT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.OCELOT), 0xefde7d, 0x564434, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PANDA_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PANDA_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PANDA_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PANDA), 0xe7e7e7, 0x1b1b22, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PARROT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PARROT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PARROT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PARROT), 0x0da70b, 0xff0000, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PHANTOM_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PHANTOM_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PHANTOM_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PHANTOM), 0x43518a, 0x88ff00, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PIG_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PIG_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PIG_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PIG), 0xf0a5a2, 0xdb635f, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PIGLIN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PIGLIN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PIGLIN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PIGLIN), 0x995f40, 0xf9f3a4, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PIGLIN_BRUTE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PIGLIN_BRUTE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PIGLIN_BRUTE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PIGLIN_BRUTE), 0x592a10, 0xf9f3a4, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PILLAGER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PILLAGER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PILLAGER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PILLAGER), 0x532f36, 0x959b9b, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.POLAR_BEAR_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.POLAR_BEAR_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.POLAR_BEAR_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.POLAR_BEAR), 0xeeeede, 0xd5d6cd, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PUFFERFISH_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.PUFFERFISH_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.PUFFERFISH_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.PUFFERFISH), 0xf6b201, 0x37c3f2, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.RABBIT_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.RABBIT_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.RABBIT_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.RABBIT), 0x995f40, 0x734831, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.RAVAGER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.RAVAGER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.RAVAGER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.RAVAGER), 0x757470, 0x5b5049, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SALMON_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SALMON_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SALMON_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SALMON), 0xa00f10, 0x0e8474, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SHEEP_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SHEEP_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SHEEP_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SHEEP), 0xe7e7e7, 0xffb5b5, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SHULKER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SHULKER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SHULKER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SHULKER), 0x946794, 0x4d3852, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SILVERFISH_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SILVERFISH_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SILVERFISH_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SILVERFISH), 0x6e6e6e, 0x303030, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SKELETON_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SKELETON_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SKELETON_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SKELETON), 0xc1c1c1, 0x494949, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SKELETON_HORSE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SKELETON_HORSE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SKELETON_HORSE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SKELETON_HORSE), 0x68684f, 0xe5e5d8, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SLIME_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SLIME_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SLIME_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SLIME), 0x51a03e, 0x7ebf6e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SNIFFER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SNIFFER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SNIFFER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SNIFFER), 0x871e09, 0x25ab70, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SNOW_GOLEM_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SNOW_GOLEM_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SNOW_GOLEM_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SNOW_GOLEM), 0xd9f2f2, 0x81a4a4, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SPIDER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SPIDER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPIDER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SPIDER), 0x342d27, 0xa80e0e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SQUID_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.SQUID_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.SQUID_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.SQUID), 0x223b4d, 0x708899, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.STRAY_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.STRAY_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.STRAY_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.STRAY), 0x617677, 0xddeaea, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.STRIDER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.STRIDER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.STRIDER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.STRIDER), 0x9c3436, 0x4d494d, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TADPOLE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.TADPOLE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.TADPOLE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.TADPOLE), 0x6d533d, 0x160a00, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TRADER_LLAMA_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.TRADER_LLAMA_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.TRADER_LLAMA_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.TRADER_LLAMA), 0xeaa430, 0x456296, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TROPICAL_FISH_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.TROPICAL_FISH_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.TROPICAL_FISH_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.TROPICAL_FISH), 0xef6915, 0xfff9ef, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TURTLE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.TURTLE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.TURTLE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.TURTLE), 0xe7e7e7, 0x00afaf, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.VEX_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.VEX_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.VEX_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.VEX), 0x7a90a4, 0xe8edf1, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.VILLAGER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.VILLAGER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.VILLAGER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.VILLAGER), 0x563c33, 0xbd8b72, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.VINDICATOR_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.VINDICATOR_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.VINDICATOR_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.VINDICATOR), 0x959b9b, 0x275e61, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WANDERING_TRADER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WANDERING_TRADER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WANDERING_TRADER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WANDERING_TRADER), 0x456296, 0xeaa430, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WARDEN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WARDEN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WARDEN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WARDEN), 0x0f4649, 0x39d6e0, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WITCH_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WITCH_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WITCH_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WITCH), 0x340000, 0x51a03e, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WITHER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WITHER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WITHER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WITHER), 0x141414, 0x4d72a0, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WITHER_SKELETON_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WITHER_SKELETON_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WITHER_SKELETON_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WITHER_SKELETON), 0x141414, 0x474d4d, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.WOLF_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.WOLF_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOLF_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.WOLF), 0xd7d3d3, 0xceaf96, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ZOGLIN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ZOGLIN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ZOGLIN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ZOGLIN), 0xc66e55, 0xe6e6e6, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ZOMBIE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ZOMBIE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ZOMBIE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ZOMBIE), 0x00afaf, 0x799c65, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ZOMBIE_HORSE_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ZOMBIE_HORSE_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ZOMBIE_HORSE_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ZOMBIE_HORSE), 0x315234, 0x97c284, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ZOMBIE_VILLAGER_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ZOMBIE_VILLAGER_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ZOMBIE_VILLAGER_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ZOMBIE_VILLAGER), 0x563c33, 0x799c65, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.ZOMBIFIED_PIGLIN_SPAWN_EGG, create( - ItemBase.Builder.forItem(ItemKeys.ZOMBIFIED_PIGLIN_SPAWN_EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.ZOMBIFIED_PIGLIN_SPAWN_EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(SpawnEggItemComponent.from(this.entityTypes.getOrThrow(EntityTypeKeys.ZOMBIFIED_PIGLIN), 0xea9393, 0x4c7129, this.dispenseBehaviors)) @@ -6333,7 +6332,7 @@ private void bootstrapSpawnEggs() { private void bootstrapCompostables() { this.registerable.register(ItemKeys.OAK_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_LEAVES))) @@ -6342,7 +6341,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SPRUCE_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_LEAVES))) @@ -6351,7 +6350,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BIRCH_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_LEAVES))) @@ -6360,7 +6359,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.JUNGLE_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_LEAVES))) @@ -6369,7 +6368,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.ACACIA_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_LEAVES))) @@ -6378,7 +6377,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CHERRY_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_LEAVES))) @@ -6386,7 +6385,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_LEAVES))) @@ -6395,7 +6394,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MANGROVE_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_LEAVES))) @@ -6404,7 +6403,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.AZALEA_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.AZALEA_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.AZALEA_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.AZALEA_LEAVES))) @@ -6412,7 +6411,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.OAK_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_SAPLING))) @@ -6424,7 +6423,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SPRUCE_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_SAPLING))) @@ -6436,7 +6435,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BIRCH_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_SAPLING))) @@ -6448,7 +6447,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.JUNGLE_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_SAPLING))) @@ -6460,7 +6459,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.ACACIA_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_SAPLING))) @@ -6472,7 +6471,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CHERRY_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_SAPLING))) @@ -6484,7 +6483,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_SAPLING, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_SAPLING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_SAPLING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_SAPLING))) @@ -6496,7 +6495,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MANGROVE_PROPAGULE, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_PROPAGULE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_PROPAGULE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_PROPAGULE))) @@ -6508,7 +6507,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SHORT_GRASS, create( - ItemBase.Builder.forBlock(ItemKeys.SHORT_GRASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SHORT_GRASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SHORT_GRASS))) @@ -6517,7 +6516,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.KELP, create( - ItemBase.Builder.forBlock(ItemKeys.KELP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.KELP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.KELP))) @@ -6525,7 +6524,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MOSS_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.MOSS_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSS_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSS_CARPET))) @@ -6533,7 +6532,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PINK_PETALS, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_PETALS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_PETALS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_PETALS))) @@ -6541,7 +6540,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.HANGING_ROOTS, create( - ItemBase.Builder.forBlock(ItemKeys.HANGING_ROOTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HANGING_ROOTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HANGING_ROOTS))) @@ -6549,7 +6548,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SMALL_DRIPLEAF, create( - ItemBase.Builder.forBlock(ItemKeys.SMALL_DRIPLEAF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMALL_DRIPLEAF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMALL_DRIPLEAF))) @@ -6557,7 +6556,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WHEAT_SEEDS, create( - ItemBase.Builder.forItem(ItemKeys.WHEAT_SEEDS).build(), + ItemDisplay.Builder.forItem(ItemKeys.WHEAT_SEEDS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHEAT))) @@ -6565,7 +6564,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PUMPKIN_SEEDS, create( - ItemBase.Builder.forItem(ItemKeys.PUMPKIN_SEEDS).build(), + ItemDisplay.Builder.forItem(ItemKeys.PUMPKIN_SEEDS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PUMPKIN_STEM))) @@ -6573,7 +6572,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MELON_SEEDS, create( - ItemBase.Builder.forItem(ItemKeys.MELON_SEEDS).build(), + ItemDisplay.Builder.forItem(ItemKeys.MELON_SEEDS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MELON_STEM))) @@ -6581,7 +6580,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.TORCHFLOWER_SEEDS, create( - ItemBase.Builder.forItem(ItemKeys.TORCHFLOWER_SEEDS).build(), + ItemDisplay.Builder.forItem(ItemKeys.TORCHFLOWER_SEEDS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TORCHFLOWER_CROP))) @@ -6589,7 +6588,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PITCHER_POD, create( - ItemBase.Builder.forItem(ItemKeys.PITCHER_POD).build(), + ItemDisplay.Builder.forItem(ItemKeys.PITCHER_POD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PITCHER_CROP))) @@ -6597,7 +6596,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BEETROOT_SEEDS, create( - ItemBase.Builder.forItem(ItemKeys.BEETROOT_SEEDS).build(), + ItemDisplay.Builder.forItem(ItemKeys.BEETROOT_SEEDS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BEETROOTS))) @@ -6605,7 +6604,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MANGROVE_ROOTS, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_ROOTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_ROOTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_ROOTS))) @@ -6614,7 +6613,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SEAGRASS, create( - ItemBase.Builder.forBlock(ItemKeys.SEAGRASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SEAGRASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SEAGRASS))) @@ -6622,7 +6621,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.FLOWERING_AZALEA_LEAVES, create( - ItemBase.Builder.forBlock(ItemKeys.FLOWERING_AZALEA_LEAVES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FLOWERING_AZALEA_LEAVES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FLOWERING_AZALEA_LEAVES))) @@ -6630,7 +6629,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.NETHER_SPROUTS, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_SPROUTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_SPROUTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_SPROUTS))) @@ -6638,7 +6637,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WEEPING_VINES, create( - ItemBase.Builder.forBlock(ItemKeys.WEEPING_VINES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WEEPING_VINES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WEEPING_VINES))) @@ -6646,7 +6645,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.TWISTING_VINES, create( - ItemBase.Builder.forBlock(ItemKeys.TWISTING_VINES).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TWISTING_VINES).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TWISTING_VINES))) @@ -6654,7 +6653,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SUGAR_CANE, create( - ItemBase.Builder.forBlock(ItemKeys.SUGAR_CANE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SUGAR_CANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SUGAR_CANE))) @@ -6662,7 +6661,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.VINE, create( - ItemBase.Builder.forBlock(ItemKeys.VINE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.VINE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.VINE))) @@ -6671,7 +6670,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.GLOW_LICHEN, create( - ItemBase.Builder.forBlock(ItemKeys.GLOW_LICHEN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GLOW_LICHEN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GLOW_LICHEN))) @@ -6679,7 +6678,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.TALL_GRASS, create( - ItemBase.Builder.forBlock(ItemKeys.TALL_GRASS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TALL_GRASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TALL_GRASS))) @@ -6688,7 +6687,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CACTUS, create( - ItemBase.Builder.forBlock(ItemKeys.CACTUS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CACTUS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CACTUS))) @@ -6699,7 +6698,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.DRIED_KELP_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.DRIED_KELP_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DRIED_KELP_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DRIED_KELP_BLOCK))) @@ -6708,7 +6707,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.FERN, create( - ItemBase.Builder.forBlock(ItemKeys.FERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FERN))) @@ -6720,7 +6719,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.LILY_PAD, create( - ItemBase.Builder.forBlock(ItemKeys.LILY_PAD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LILY_PAD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LILY_PAD), BlockItemComponent.Pass.FLUID)) @@ -6729,7 +6728,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.NETHER_WART, create( - ItemBase.Builder.forItem(ItemKeys.NETHER_WART).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHER_WART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_WART))) @@ -6737,7 +6736,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.COCOA_BEANS, create( - ItemBase.Builder.forItem(ItemKeys.COCOA_BEANS).build(), + ItemDisplay.Builder.forItem(ItemKeys.COCOA_BEANS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COCOA))) @@ -6745,7 +6744,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BIG_DRIPLEAF, create( - ItemBase.Builder.forBlock(ItemKeys.BIG_DRIPLEAF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIG_DRIPLEAF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIG_DRIPLEAF))) @@ -6753,7 +6752,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PUMPKIN, create( - ItemBase.Builder.forBlock(ItemKeys.PUMPKIN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PUMPKIN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PUMPKIN))) @@ -6761,17 +6760,17 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CARVED_PUMPKIN, create( - ItemBase.Builder.forBlock(ItemKeys.CARVED_PUMPKIN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CARVED_PUMPKIN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CARVED_PUMPKIN))) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) - .with(EquipmentItemComponent.of(EquipmentSlot.HEAD, false, this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GENERIC))) + .with(EquipmentItemComponent.ofStatic(EquipmentSlot.HEAD)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.PLACE_CARVED_PUMPKIN))) .build() )); this.registerable.register(ItemKeys.MELON, create( - ItemBase.Builder.forBlock(ItemKeys.MELON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MELON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MELON))) @@ -6779,7 +6778,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SEA_PICKLE, create( - ItemBase.Builder.forBlock(ItemKeys.SEA_PICKLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SEA_PICKLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SEA_PICKLE))) @@ -6787,14 +6786,14 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WHEAT, create( - ItemBase.Builder.forItem(ItemKeys.WHEAT).build(), + ItemDisplay.Builder.forItem(ItemKeys.WHEAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) .build() )); this.registerable.register(ItemKeys.DANDELION, create( - ItemBase.Builder.forBlock(ItemKeys.DANDELION).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DANDELION).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DANDELION))) @@ -6808,7 +6807,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.POPPY, create( - ItemBase.Builder.forBlock(ItemKeys.POPPY).build(), + ItemDisplay.Builder.forBlock(ItemKeys.POPPY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.POPPY))) @@ -6822,7 +6821,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BLUE_ORCHID, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_ORCHID).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_ORCHID).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_ORCHID))) @@ -6836,7 +6835,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.ALLIUM, create( - ItemBase.Builder.forBlock(ItemKeys.ALLIUM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ALLIUM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ALLIUM))) @@ -6850,7 +6849,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.AZURE_BLUET, create( - ItemBase.Builder.forBlock(ItemKeys.AZURE_BLUET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.AZURE_BLUET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.AZURE_BLUET))) @@ -6864,7 +6863,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.RED_TULIP, create( - ItemBase.Builder.forBlock(ItemKeys.RED_TULIP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_TULIP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_TULIP))) @@ -6878,7 +6877,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.ORANGE_TULIP, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_TULIP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_TULIP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_TULIP))) @@ -6892,7 +6891,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WHITE_TULIP, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_TULIP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_TULIP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_TULIP))) @@ -6906,7 +6905,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PINK_TULIP, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_TULIP).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_TULIP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_TULIP))) @@ -6920,7 +6919,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.OXEYE_DAISY, create( - ItemBase.Builder.forBlock(ItemKeys.OXEYE_DAISY).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OXEYE_DAISY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OXEYE_DAISY))) @@ -6934,7 +6933,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CORNFLOWER, create( - ItemBase.Builder.forBlock(ItemKeys.CORNFLOWER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CORNFLOWER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CORNFLOWER))) @@ -6948,7 +6947,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.LILY_OF_THE_VALLEY, create( - ItemBase.Builder.forBlock(ItemKeys.LILY_OF_THE_VALLEY).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LILY_OF_THE_VALLEY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LILY_OF_THE_VALLEY))) @@ -6962,7 +6961,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WITHER_ROSE, create( - ItemBase.Builder.forBlock(ItemKeys.WITHER_ROSE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WITHER_ROSE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WITHER_ROSE))) @@ -6976,7 +6975,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.AZALEA, create( - ItemBase.Builder.forBlock(ItemKeys.AZALEA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.AZALEA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.AZALEA))) @@ -6988,7 +6987,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SUNFLOWER, create( - ItemBase.Builder.forBlock(ItemKeys.SUNFLOWER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SUNFLOWER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SUNFLOWER))) @@ -6996,7 +6995,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.LILAC, create( - ItemBase.Builder.forBlock(ItemKeys.LILAC).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LILAC).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LILAC))) @@ -7004,7 +7003,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.ROSE_BUSH, create( - ItemBase.Builder.forBlock(ItemKeys.ROSE_BUSH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ROSE_BUSH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ROSE_BUSH))) @@ -7012,7 +7011,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PEONY, create( - ItemBase.Builder.forBlock(ItemKeys.PEONY).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PEONY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PEONY))) @@ -7020,7 +7019,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.LARGE_FERN, create( - ItemBase.Builder.forBlock(ItemKeys.LARGE_FERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LARGE_FERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LARGE_FERN))) @@ -7029,7 +7028,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SPORE_BLOSSOM, create( - ItemBase.Builder.forBlock(ItemKeys.SPORE_BLOSSOM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPORE_BLOSSOM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPORE_BLOSSOM))) @@ -7037,7 +7036,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BROWN_MUSHROOM, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_MUSHROOM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_MUSHROOM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_MUSHROOM))) @@ -7048,7 +7047,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.RED_MUSHROOM, create( - ItemBase.Builder.forBlock(ItemKeys.RED_MUSHROOM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_MUSHROOM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_MUSHROOM))) @@ -7059,7 +7058,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CRIMSON_FUNGUS, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_FUNGUS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_FUNGUS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_FUNGUS))) @@ -7070,7 +7069,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WARPED_FUNGUS, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_FUNGUS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_FUNGUS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_FUNGUS))) @@ -7081,7 +7080,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CRIMSON_ROOTS, create( - ItemBase.Builder.forBlock(ItemKeys.CRIMSON_ROOTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRIMSON_ROOTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRIMSON_ROOTS))) @@ -7092,7 +7091,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WARPED_ROOTS, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_ROOTS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_ROOTS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_ROOTS))) @@ -7103,7 +7102,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MOSS_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.MOSS_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MOSS_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MOSS_BLOCK))) @@ -7111,7 +7110,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.MUSHROOM_STEM, create( - ItemBase.Builder.forBlock(ItemKeys.MUSHROOM_STEM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MUSHROOM_STEM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MUSHROOM_STEM))) @@ -7119,7 +7118,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.SHROOMLIGHT, create( - ItemBase.Builder.forBlock(ItemKeys.SHROOMLIGHT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SHROOMLIGHT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SHROOMLIGHT))) @@ -7127,7 +7126,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.NETHER_WART_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.NETHER_WART_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHER_WART_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHER_WART_BLOCK))) @@ -7135,7 +7134,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.WARPED_WART_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.WARPED_WART_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WARPED_WART_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WARPED_WART_BLOCK))) @@ -7143,7 +7142,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.HAY_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.HAY_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.HAY_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.HAY_BLOCK))) @@ -7151,7 +7150,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.FLOWERING_AZALEA, create( - ItemBase.Builder.forBlock(ItemKeys.FLOWERING_AZALEA).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FLOWERING_AZALEA).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FLOWERING_AZALEA))) @@ -7163,7 +7162,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.TORCHFLOWER, create( - ItemBase.Builder.forBlock(ItemKeys.TORCHFLOWER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TORCHFLOWER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TORCHFLOWER))) @@ -7177,7 +7176,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.PITCHER_PLANT, create( - ItemBase.Builder.forBlock(ItemKeys.PITCHER_PLANT).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PITCHER_PLANT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PITCHER_PLANT))) @@ -7185,7 +7184,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.BROWN_MUSHROOM_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_MUSHROOM_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_MUSHROOM_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_MUSHROOM_BLOCK))) @@ -7193,7 +7192,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.RED_MUSHROOM_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.RED_MUSHROOM_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_MUSHROOM_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_MUSHROOM_BLOCK))) @@ -7201,7 +7200,7 @@ private void bootstrapCompostables() { .build() )); this.registerable.register(ItemKeys.CAKE, create( - ItemBase.Builder.forBlock(ItemKeys.CAKE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CAKE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CAKE))) @@ -7214,13 +7213,22 @@ private void bootstrapEquipment() { this.bootstrapArmor(); this.bootstrapSkulls(); this.registerable.register(ItemKeys.ELYTRA, create( - ItemBase.Builder.forItem(ItemKeys.ELYTRA) + ItemDisplay.Builder.forItem(ItemKeys.ELYTRA) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(DamageableItemComponent.ofPreserved(432)) - .with(EquipmentItemComponent.of(EquipmentSlot.CHEST, true, this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_ELYTRA))) + .with(GliderItemComponent.of(ItemPredicate.Builder.create() + .subPredicate(ItemSubPredicateTypes.DAMAGE, DamagePredicate.durability( + NumberRange.IntRange.atLeast(2))) + .build())) + .with(EquipmentItemComponent.of( + EquipmentSlot.CHEST, + true, + this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_ELYTRA), + EquipmentModels.ELYTRA + )) .with(RepairableItemComponent.of(RegistryEntryList.of( this.items.getOrThrow(ItemKeys.PHANTOM_MEMBRANE) ))) @@ -7228,7 +7236,7 @@ private void bootstrapEquipment() { .build() )); this.registerable.register(ItemKeys.SHIELD, create( - ItemBase.Builder.forItem(ItemKeys.SHIELD).build(), + ItemDisplay.Builder.forItem(ItemKeys.SHIELD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(UseableItemComponent.builder() @@ -7246,10 +7254,10 @@ private void bootstrapEquipment() { private void bootstrapArmor() { this.registerable.register(ItemKeys.LEATHER_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.LEATHER, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) @@ -7257,10 +7265,10 @@ private void bootstrapArmor() { .build() )); this.registerable.register(ItemKeys.LEATHER_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER_CHESTPLATE).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER_CHESTPLATE).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.LEATHER, EquipmentType.CHESTPLATE)) + .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) @@ -7268,10 +7276,10 @@ private void bootstrapArmor() { .build() )); this.registerable.register(ItemKeys.LEATHER_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER_LEGGINGS).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER_LEGGINGS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.LEATHER, EquipmentType.LEGGINGS)) + .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) @@ -7279,10 +7287,10 @@ private void bootstrapArmor() { .build() )); this.registerable.register(ItemKeys.LEATHER_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER_BOOTS).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER_BOOTS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 5, this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.leatherEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.LEATHER, EquipmentType.BOOTS)) + .with(EnchantableItemComponent.of(ArmorMaterials.LEATHER)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_LEATHER_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) @@ -7290,240 +7298,240 @@ private void bootstrapArmor() { .build() )); this.registerable.register(ItemKeys.CHAINMAIL_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_HELMET) + ItemDisplay.Builder.forItem(ItemKeys.CHAINMAIL_HELMET) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.CHAIN, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_CHESTPLATE) + ItemDisplay.Builder.forItem(ItemKeys.CHAINMAIL_CHESTPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.CHAIN, EquipmentType.CHESTPLATE)) + .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_LEGGINGS) + ItemDisplay.Builder.forItem(ItemKeys.CHAINMAIL_LEGGINGS) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.CHAIN, EquipmentType.LEGGINGS)) + .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CHAINMAIL_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.CHAINMAIL_BOOTS) + ItemDisplay.Builder.forItem(ItemKeys.CHAINMAIL_BOOTS) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.CHAINMAIL), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_CHAIN))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.chainEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.CHAIN, EquipmentType.BOOTS)) + .with(EnchantableItemComponent.of(ArmorMaterials.CHAIN)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_CHAINMAIL_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.IRON_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.IRON_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.IRON, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.IRON_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.IRON_CHESTPLATE).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_CHESTPLATE).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.IRON, EquipmentType.CHESTPLATE)) + .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.IRON_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.IRON_LEGGINGS).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_LEGGINGS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.IRON, EquipmentType.LEGGINGS)) + .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.IRON_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.IRON_BOOTS).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_BOOTS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 15, this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.ironEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.IRON, EquipmentType.BOOTS)) + .with(EnchantableItemComponent.of(ArmorMaterials.IRON)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_IRON_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.DIAMOND_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.DIAMOND, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.DIAMOND_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_CHESTPLATE).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_CHESTPLATE).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.DIAMOND, EquipmentType.CHESTPLATE)) + .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.DIAMOND_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_LEGGINGS).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_LEGGINGS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.DIAMOND, EquipmentType.LEGGINGS)) + .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.DIAMOND_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_BOOTS).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_BOOTS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 33, this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.diamondEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.DIAMOND, EquipmentType.BOOTS)) + .with(EnchantableItemComponent.of(ArmorMaterials.DIAMOND)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_DIAMOND_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GOLDEN_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.GOLD, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GOLDEN_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_CHESTPLATE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_CHESTPLATE).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.GOLD, EquipmentType.CHESTPLATE)) + .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GOLDEN_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_LEGGINGS).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_LEGGINGS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.GOLD, EquipmentType.LEGGINGS)) + .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GOLDEN_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_BOOTS).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_BOOTS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 7, this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.goldEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.GOLD, EquipmentType.BOOTS)) + .with(EnchantableItemComponent.of(ArmorMaterials.GOLD)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_GOLDEN_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.NETHERITE_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.HELMET, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) + .with(ArmorItemComponent.from(ArmorMaterials.NETHERITE, EquipmentType.HELMET)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.NETHERITE_CHESTPLATE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_CHESTPLATE).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_CHESTPLATE).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.CHESTPLATE, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) + .with(ArmorItemComponent.from(ArmorMaterials.NETHERITE, EquipmentType.CHESTPLATE)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.NETHERITE_LEGGINGS, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_LEGGINGS).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_LEGGINGS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.LEGGINGS, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) + .with(ArmorItemComponent.from(ArmorMaterials.NETHERITE, EquipmentType.LEGGINGS)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.NETHERITE_BOOTS, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_BOOTS).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_BOOTS).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(ArmorItem.Type.BOOTS, 37, this.armorMaterials.getOrThrow(ArmorMaterialKeys.NETHERITE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_NETHERITE))) + .with(ArmorItemComponent.from(ArmorMaterials.NETHERITE, EquipmentType.BOOTS)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.netheriteEnchantability())) + .with(EnchantableItemComponent.of(ArmorMaterials.NETHERITE)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_NETHERITE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.TURTLE_HELMET, create( - ItemBase.Builder.forItem(ItemKeys.TURTLE_HELMET).build(), + ItemDisplay.Builder.forItem(ItemKeys.TURTLE_HELMET).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.of(275, EquipmentSlot.HEAD, this.armorMaterials.getOrThrow(ArmorMaterialKeys.TURTLE), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_TURTLE))) - .with(EnchantableItemComponent.of(ArmorMaterialsAccessor.turtleEnchantability())) + .with(ArmorItemComponent.from(ArmorMaterials.TURTLE_SCUTE, EquipmentType.HELMET)) + .with(EnchantableItemComponent.of(ArmorMaterials.TURTLE_SCUTE)) .with(RepairableItemComponent.of(this.items.getOrThrow(ItematicItemTags.REPAIRS_TURTLE_ARMOR))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.LEATHER_HORSE_ARMOR, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER_HORSE_ARMOR).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER_HORSE_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.ofAnimal(this.armorMaterials.getOrThrow(ArmorMaterialKeys.LEATHER), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_LEATHER), AnimalArmorItem.Type.EQUESTRIAN)) + .with(ArmorItemComponent.from(ArmorMaterials.LEATHER, EquipmentType.BODY, AnimalArmorItem.Type.EQUESTRIAN)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .with(DyeableItemComponent.of()) .with(TintedItemComponent.of(DyeableItemColor.of(0))) .build() )); this.registerable.register(ItemKeys.IRON_HORSE_ARMOR, create( - ItemBase.Builder.forItem(ItemKeys.IRON_HORSE_ARMOR).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_HORSE_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.ofAnimal(this.armorMaterials.getOrThrow(ArmorMaterialKeys.IRON), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_IRON), AnimalArmorItem.Type.EQUESTRIAN)) + .with(ArmorItemComponent.from(ArmorMaterials.IRON, EquipmentType.BODY, AnimalArmorItem.Type.EQUESTRIAN)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GOLDEN_HORSE_ARMOR, create( - ItemBase.Builder.forItem(ItemKeys.GOLDEN_HORSE_ARMOR).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLDEN_HORSE_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.ofAnimal(this.armorMaterials.getOrThrow(ArmorMaterialKeys.GOLD), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GOLD), AnimalArmorItem.Type.EQUESTRIAN)) + .with(ArmorItemComponent.from(ArmorMaterials.GOLD, EquipmentType.BODY, AnimalArmorItem.Type.EQUESTRIAN)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.DIAMOND_HORSE_ARMOR, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND_HORSE_ARMOR).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND_HORSE_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.ofAnimal(this.armorMaterials.getOrThrow(ArmorMaterialKeys.DIAMOND), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_DIAMOND), AnimalArmorItem.Type.EQUESTRIAN)) + .with(ArmorItemComponent.from(ArmorMaterials.DIAMOND, EquipmentType.BODY, AnimalArmorItem.Type.EQUESTRIAN)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.WOLF_ARMOR, create( - ItemBase.Builder.forItem(ItemKeys.WOLF_ARMOR).build(), + ItemDisplay.Builder.forItem(ItemKeys.WOLF_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.ofAnimal(this.armorMaterials.getOrThrow(ArmorMaterialKeys.ARMADILLO), this.soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_WOLF), AnimalArmorItem.Type.CANINE, 4, this.soundEvents.getOrThrow(SoundEventKeys.WOLF_ARMOR_BREAK))) + .with(ArmorItemComponent.from(ArmorMaterials.ARMADILLO_SCUTE, EquipmentType.BODY, AnimalArmorItem.Type.CANINE)) .with(DyeableItemComponent.of(0x000000)) .with(TintedItemComponent.of(DyeableItemColor.of(1))) .build() @@ -7532,73 +7540,101 @@ private void bootstrapArmor() { private void bootstrapSkulls() { this.registerable.register(ItemKeys.SKELETON_SKULL, create( - ItemBase.Builder.forBlock(ItemKeys.SKELETON_SKULL) + ItemDisplay.Builder.forBlock(ItemKeys.SKELETON_SKULL) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.SKELETON_SKULL), this.blocks.getOrThrow(BlockKeys.SKELETON_WALL_SKULL), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.SKELETON_SKULL), + this.blocks.getOrThrow(BlockKeys.SKELETON_WALL_SKULL), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.WITHER_SKELETON_SKULL, create( - ItemBase.Builder.forBlock(ItemKeys.WITHER_SKELETON_SKULL) + ItemDisplay.Builder.forBlock(ItemKeys.WITHER_SKELETON_SKULL) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.WITHER_SKELETON_SKULL), this.blocks.getOrThrow(BlockKeys.WITHER_SKELETON_WALL_SKULL), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.WITHER_SKELETON_SKULL), + this.blocks.getOrThrow(BlockKeys.WITHER_SKELETON_WALL_SKULL), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.PLAYER_HEAD, create( - ItemBase.Builder.forBlock(ItemKeys.PLAYER_HEAD) + ItemDisplay.Builder.forBlock(ItemKeys.PLAYER_HEAD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.PLAYER_HEAD), this.blocks.getOrThrow(BlockKeys.PLAYER_WALL_HEAD), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.PLAYER_HEAD), + this.blocks.getOrThrow(BlockKeys.PLAYER_WALL_HEAD), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.ZOMBIE_HEAD, create( - ItemBase.Builder.forBlock(ItemKeys.ZOMBIE_HEAD) + ItemDisplay.Builder.forBlock(ItemKeys.ZOMBIE_HEAD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.ZOMBIE_HEAD), this.blocks.getOrThrow(BlockKeys.ZOMBIE_WALL_HEAD), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.ZOMBIE_HEAD), + this.blocks.getOrThrow(BlockKeys.ZOMBIE_WALL_HEAD), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.CREEPER_HEAD, create( - ItemBase.Builder.forBlock(ItemKeys.CREEPER_HEAD) + ItemDisplay.Builder.forBlock(ItemKeys.CREEPER_HEAD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.CREEPER_HEAD), this.blocks.getOrThrow(BlockKeys.CREEPER_WALL_HEAD), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.CREEPER_HEAD), + this.blocks.getOrThrow(BlockKeys.CREEPER_WALL_HEAD), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.DRAGON_HEAD, create( - ItemBase.Builder.forBlock(ItemKeys.DRAGON_HEAD) + ItemDisplay.Builder.forBlock(ItemKeys.DRAGON_HEAD) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.DRAGON_HEAD), this.blocks.getOrThrow(BlockKeys.DRAGON_WALL_HEAD), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.DRAGON_HEAD), + this.blocks.getOrThrow(BlockKeys.DRAGON_WALL_HEAD), + this.dispenseBehaviors + )) .build() )); this.registerable.register(ItemKeys.PIGLIN_HEAD, create( - ItemBase.Builder.forBlock(ItemKeys.PIGLIN_HEAD) + ItemDisplay.Builder.forBlock(ItemKeys.PIGLIN_HEAD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) - .with(EquipmentItemComponent.skull(this.blocks.getOrThrow(BlockKeys.PIGLIN_HEAD), this.blocks.getOrThrow(BlockKeys.PIGLIN_WALL_HEAD), this.soundEvents, this.dispenseBehaviors)) + .with(EquipmentItemComponent.skull( + this.blocks.getOrThrow(BlockKeys.PIGLIN_HEAD), + this.blocks.getOrThrow(BlockKeys.PIGLIN_WALL_HEAD), + this.dispenseBehaviors + )) .build() )); } private void bootstrapFuel() { this.registerable.register(ItemKeys.COAL_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.COAL_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COAL_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COAL_BLOCK))) @@ -7606,28 +7642,28 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BLAZE_ROD, create( - ItemBase.Builder.forItem(ItemKeys.BLAZE_ROD).build(), + ItemDisplay.Builder.forItem(ItemKeys.BLAZE_ROD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BLAZE_ROD_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.COAL, create( - ItemBase.Builder.forItem(ItemKeys.COAL).build(), + ItemDisplay.Builder.forItem(ItemKeys.COAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.COAL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.CHARCOAL, create( - ItemBase.Builder.forItem(ItemKeys.CHARCOAL).build(), + ItemDisplay.Builder.forItem(ItemKeys.CHARCOAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.COAL_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.OAK_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.OAK_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.OAK_WALL_HANGING_SIGN), Direction.UP)) @@ -7635,7 +7671,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.SPRUCE_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.SPRUCE_WALL_HANGING_SIGN), Direction.UP)) @@ -7643,7 +7679,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BIRCH_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.BIRCH_WALL_HANGING_SIGN), Direction.UP)) @@ -7651,7 +7687,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.JUNGLE_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.JUNGLE_WALL_HANGING_SIGN), Direction.UP)) @@ -7659,7 +7695,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.ACACIA_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.ACACIA_WALL_HANGING_SIGN), Direction.UP)) @@ -7667,7 +7703,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.CHERRY_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.CHERRY_WALL_HANGING_SIGN), Direction.UP)) @@ -7675,7 +7711,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DARK_OAK_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.DARK_OAK_WALL_HANGING_SIGN), Direction.UP)) @@ -7683,7 +7719,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.MANGROVE_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.MANGROVE_WALL_HANGING_SIGN), Direction.UP)) @@ -7691,7 +7727,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_HANGING_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_HANGING_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_HANGING_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BAMBOO_HANGING_SIGN), this.blocks.getOrThrow(BlockKeys.BAMBOO_WALL_HANGING_SIGN), Direction.UP)) @@ -7699,7 +7735,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.OAK_SIGN), this.blocks.getOrThrow(BlockKeys.OAK_WALL_SIGN), Direction.DOWN)) @@ -7707,7 +7743,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.SPRUCE_SIGN), this.blocks.getOrThrow(BlockKeys.SPRUCE_WALL_SIGN), Direction.DOWN)) @@ -7715,7 +7751,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BIRCH_SIGN), this.blocks.getOrThrow(BlockKeys.BIRCH_WALL_SIGN), Direction.DOWN)) @@ -7723,7 +7759,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.JUNGLE_SIGN), this.blocks.getOrThrow(BlockKeys.JUNGLE_WALL_SIGN), Direction.DOWN)) @@ -7731,7 +7767,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.ACACIA_SIGN), this.blocks.getOrThrow(BlockKeys.ACACIA_WALL_SIGN), Direction.DOWN)) @@ -7739,7 +7775,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.CHERRY_SIGN), this.blocks.getOrThrow(BlockKeys.CHERRY_WALL_SIGN), Direction.DOWN)) @@ -7747,7 +7783,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.DARK_OAK_SIGN), this.blocks.getOrThrow(BlockKeys.DARK_OAK_WALL_SIGN), Direction.DOWN)) @@ -7755,7 +7791,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.MANGROVE_SIGN), this.blocks.getOrThrow(BlockKeys.MANGROVE_WALL_SIGN), Direction.DOWN)) @@ -7763,7 +7799,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_SIGN, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_SIGN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_SIGN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BAMBOO_SIGN), this.blocks.getOrThrow(BlockKeys.BAMBOO_WALL_SIGN), Direction.DOWN)) @@ -7771,7 +7807,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_PLANKS))) @@ -7779,7 +7815,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_PLANKS))) @@ -7787,7 +7823,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_PLANKS))) @@ -7795,7 +7831,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_PLANKS))) @@ -7803,7 +7839,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_PLANKS))) @@ -7811,7 +7847,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_PLANKS))) @@ -7819,7 +7855,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_PLANKS))) @@ -7827,7 +7863,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_PLANKS))) @@ -7835,7 +7871,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_PLANKS, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_PLANKS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_PLANKS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_PLANKS))) @@ -7843,7 +7879,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_MOSAIC, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_MOSAIC))) @@ -7851,7 +7887,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_LOG))) @@ -7859,7 +7895,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_LOG))) @@ -7867,7 +7903,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_LOG))) @@ -7875,7 +7911,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_LOG))) @@ -7883,7 +7919,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_LOG))) @@ -7891,7 +7927,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_LOG))) @@ -7899,7 +7935,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_LOG))) @@ -7907,7 +7943,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_LOG))) @@ -7915,7 +7951,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_BLOCK))) @@ -7923,7 +7959,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_OAK_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_OAK_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_OAK_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_OAK_LOG))) @@ -7931,7 +7967,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_SPRUCE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_SPRUCE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_SPRUCE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_SPRUCE_LOG))) @@ -7939,7 +7975,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_BIRCH_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_BIRCH_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_BIRCH_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_BIRCH_LOG))) @@ -7947,7 +7983,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_JUNGLE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_JUNGLE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_JUNGLE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_JUNGLE_LOG))) @@ -7955,7 +7991,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_ACACIA_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_ACACIA_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_ACACIA_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_ACACIA_LOG))) @@ -7963,7 +7999,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_CHERRY_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_CHERRY_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_CHERRY_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_CHERRY_LOG))) @@ -7971,7 +8007,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_DARK_OAK_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_DARK_OAK_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_DARK_OAK_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_DARK_OAK_LOG))) @@ -7979,7 +8015,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_MANGROVE_LOG, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_MANGROVE_LOG).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_MANGROVE_LOG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_MANGROVE_LOG))) @@ -7987,7 +8023,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_OAK_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_OAK_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_OAK_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_OAK_WOOD))) @@ -7995,7 +8031,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_SPRUCE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_SPRUCE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_SPRUCE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_SPRUCE_WOOD))) @@ -8003,7 +8039,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_BIRCH_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_BIRCH_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_BIRCH_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_BIRCH_WOOD))) @@ -8011,7 +8047,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_JUNGLE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_JUNGLE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_JUNGLE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_JUNGLE_WOOD))) @@ -8019,7 +8055,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_ACACIA_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_ACACIA_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_ACACIA_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_ACACIA_WOOD))) @@ -8027,7 +8063,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_CHERRY_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_CHERRY_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_CHERRY_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_CHERRY_WOOD))) @@ -8035,7 +8071,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_DARK_OAK_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_DARK_OAK_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_DARK_OAK_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_DARK_OAK_WOOD))) @@ -8043,7 +8079,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_MANGROVE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_MANGROVE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_MANGROVE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_MANGROVE_WOOD))) @@ -8051,7 +8087,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STRIPPED_BAMBOO_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.STRIPPED_BAMBOO_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.STRIPPED_BAMBOO_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.STRIPPED_BAMBOO_BLOCK))) @@ -8059,7 +8095,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_WOOD))) @@ -8067,7 +8103,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_WOOD))) @@ -8075,7 +8111,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_WOOD))) @@ -8083,7 +8119,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_WOOD))) @@ -8091,7 +8127,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_WOOD))) @@ -8099,7 +8135,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_WOOD))) @@ -8107,7 +8143,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_WOOD))) @@ -8115,7 +8151,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_WOOD, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_WOOD).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_WOOD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_WOOD))) @@ -8123,7 +8159,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_FENCE))) @@ -8131,7 +8167,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_FENCE))) @@ -8139,7 +8175,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_FENCE))) @@ -8147,7 +8183,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_FENCE))) @@ -8155,7 +8191,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_FENCE))) @@ -8163,7 +8199,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_FENCE))) @@ -8171,7 +8207,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_FENCE))) @@ -8179,7 +8215,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_FENCE))) @@ -8187,7 +8223,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_FENCE, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_FENCE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_FENCE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_FENCE))) @@ -8195,7 +8231,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_STAIRS))) @@ -8203,7 +8239,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_STAIRS))) @@ -8211,7 +8247,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_STAIRS))) @@ -8219,7 +8255,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_STAIRS))) @@ -8227,7 +8263,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_STAIRS))) @@ -8235,7 +8271,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_STAIRS))) @@ -8243,7 +8279,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_STAIRS))) @@ -8251,7 +8287,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_STAIRS))) @@ -8259,7 +8295,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_STAIRS))) @@ -8267,7 +8303,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_MOSAIC_STAIRS, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC_STAIRS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC_STAIRS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_MOSAIC_STAIRS))) @@ -8275,7 +8311,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_PRESSURE_PLATE))) @@ -8283,7 +8319,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_PRESSURE_PLATE))) @@ -8291,7 +8327,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_PRESSURE_PLATE))) @@ -8299,7 +8335,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_PRESSURE_PLATE))) @@ -8307,7 +8343,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_PRESSURE_PLATE))) @@ -8315,7 +8351,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_PRESSURE_PLATE))) @@ -8323,7 +8359,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_PRESSURE_PLATE))) @@ -8331,7 +8367,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_PRESSURE_PLATE))) @@ -8339,7 +8375,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_PRESSURE_PLATE, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_PRESSURE_PLATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_PRESSURE_PLATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_PRESSURE_PLATE))) @@ -8347,7 +8383,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_TRAPDOOR))) @@ -8355,7 +8391,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_TRAPDOOR))) @@ -8363,7 +8399,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_TRAPDOOR))) @@ -8371,7 +8407,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_TRAPDOOR))) @@ -8379,7 +8415,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_TRAPDOOR))) @@ -8387,7 +8423,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_TRAPDOOR))) @@ -8395,7 +8431,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_TRAPDOOR))) @@ -8403,7 +8439,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_TRAPDOOR))) @@ -8411,7 +8447,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_TRAPDOOR, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_TRAPDOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_TRAPDOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_TRAPDOOR))) @@ -8419,7 +8455,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_FENCE_GATE))) @@ -8427,7 +8463,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_FENCE_GATE))) @@ -8435,7 +8471,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_FENCE_GATE))) @@ -8443,7 +8479,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_FENCE_GATE))) @@ -8451,7 +8487,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_FENCE_GATE))) @@ -8459,7 +8495,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_FENCE_GATE))) @@ -8467,7 +8503,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_FENCE_GATE))) @@ -8475,7 +8511,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_FENCE_GATE))) @@ -8483,7 +8519,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_FENCE_GATE, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_FENCE_GATE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_FENCE_GATE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_FENCE_GATE))) @@ -8491,7 +8527,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BOOKSHELF, create( - ItemBase.Builder.forBlock(ItemKeys.BOOKSHELF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BOOKSHELF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BOOKSHELF))) @@ -8499,7 +8535,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHISELED_BOOKSHELF, create( - ItemBase.Builder.forBlock(ItemKeys.CHISELED_BOOKSHELF).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHISELED_BOOKSHELF).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHISELED_BOOKSHELF))) @@ -8507,7 +8543,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LECTERN, create( - ItemBase.Builder.forBlock(ItemKeys.LECTERN).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LECTERN).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LECTERN))) @@ -8515,7 +8551,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHEST, create( - ItemBase.Builder.forBlock(ItemKeys.CHEST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHEST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHEST))) @@ -8524,7 +8560,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.TRAPPED_CHEST, create( - ItemBase.Builder.forBlock(ItemKeys.TRAPPED_CHEST).build(), + ItemDisplay.Builder.forBlock(ItemKeys.TRAPPED_CHEST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.TRAPPED_CHEST))) @@ -8532,7 +8568,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LADDER, create( - ItemBase.Builder.forBlock(ItemKeys.LADDER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LADDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LADDER))) @@ -8540,7 +8576,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CRAFTING_TABLE, create( - ItemBase.Builder.forBlock(ItemKeys.CRAFTING_TABLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CRAFTING_TABLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CRAFTING_TABLE))) @@ -8548,7 +8584,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUKEBOX, create( - ItemBase.Builder.forBlock(ItemKeys.JUKEBOX).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUKEBOX).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUKEBOX))) @@ -8556,7 +8592,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.NOTE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.NOTE_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NOTE_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NOTE_BLOCK))) @@ -8564,7 +8600,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LOOM, create( - ItemBase.Builder.forBlock(ItemKeys.LOOM).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LOOM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LOOM))) @@ -8572,7 +8608,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.COMPOSTER, create( - ItemBase.Builder.forBlock(ItemKeys.COMPOSTER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.COMPOSTER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.COMPOSTER))) @@ -8580,7 +8616,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BARREL, create( - ItemBase.Builder.forBlock(ItemKeys.BARREL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BARREL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BARREL))) @@ -8588,7 +8624,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CARTOGRAPHY_TABLE, create( - ItemBase.Builder.forBlock(ItemKeys.CARTOGRAPHY_TABLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CARTOGRAPHY_TABLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CARTOGRAPHY_TABLE))) @@ -8596,7 +8632,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.FLETCHING_TABLE, create( - ItemBase.Builder.forBlock(ItemKeys.FLETCHING_TABLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.FLETCHING_TABLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.FLETCHING_TABLE))) @@ -8604,7 +8640,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SMITHING_TABLE, create( - ItemBase.Builder.forBlock(ItemKeys.SMITHING_TABLE).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SMITHING_TABLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SMITHING_TABLE))) @@ -8612,7 +8648,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DAYLIGHT_DETECTOR, create( - ItemBase.Builder.forBlock(ItemKeys.DAYLIGHT_DETECTOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DAYLIGHT_DETECTOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DAYLIGHT_DETECTOR))) @@ -8620,7 +8656,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_DOOR))) @@ -8628,7 +8664,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_DOOR))) @@ -8636,7 +8672,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_DOOR))) @@ -8644,7 +8680,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_DOOR))) @@ -8652,7 +8688,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_DOOR))) @@ -8660,7 +8696,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_DOOR))) @@ -8668,7 +8704,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_DOOR))) @@ -8676,7 +8712,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_DOOR))) @@ -8684,7 +8720,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_DOOR, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_DOOR).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_DOOR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_DOOR))) @@ -8692,7 +8728,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_SLAB))) @@ -8700,7 +8736,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_SLAB))) @@ -8708,7 +8744,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_SLAB))) @@ -8716,7 +8752,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_SLAB))) @@ -8724,7 +8760,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_SLAB))) @@ -8732,7 +8768,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_SLAB))) @@ -8740,7 +8776,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_SLAB))) @@ -8748,7 +8784,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_SLAB))) @@ -8756,7 +8792,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_SLAB))) @@ -8764,7 +8800,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_MOSAIC_SLAB, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC_SLAB).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_MOSAIC_SLAB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_MOSAIC_SLAB))) @@ -8772,7 +8808,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DEAD_BUSH, create( - ItemBase.Builder.forBlock(ItemKeys.DEAD_BUSH).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DEAD_BUSH).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DEAD_BUSH))) @@ -8783,7 +8819,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.OAK_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.OAK_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.OAK_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.OAK_BUTTON))) @@ -8791,7 +8827,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SPRUCE_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.SPRUCE_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SPRUCE_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SPRUCE_BUTTON))) @@ -8799,7 +8835,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BIRCH_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.BIRCH_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BIRCH_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BIRCH_BUTTON))) @@ -8807,7 +8843,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.JUNGLE_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.JUNGLE_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.JUNGLE_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.JUNGLE_BUTTON))) @@ -8815,7 +8851,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ACACIA_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.ACACIA_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ACACIA_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ACACIA_BUTTON))) @@ -8823,7 +8859,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CHERRY_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.CHERRY_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CHERRY_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CHERRY_BUTTON))) @@ -8831,7 +8867,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.DARK_OAK_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.DARK_OAK_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.DARK_OAK_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.DARK_OAK_BUTTON))) @@ -8839,7 +8875,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MANGROVE_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.MANGROVE_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MANGROVE_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MANGROVE_BUTTON))) @@ -8847,7 +8883,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BAMBOO_BUTTON, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO_BUTTON).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO_BUTTON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO_BUTTON))) @@ -8855,21 +8891,21 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.STICK, create( - ItemBase.Builder.forItem(ItemKeys.STICK).build(), + ItemDisplay.Builder.forItem(ItemKeys.STICK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.SMALL_WOODEN_ITEM_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.BOWL, create( - ItemBase.Builder.forItem(ItemKeys.BOWL).build(), + ItemDisplay.Builder.forItem(ItemKeys.BOWL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.SMALL_WOODEN_ITEM_FUEL_TIME)) .build() )); this.registerable.register(ItemKeys.BAMBOO, create( - ItemBase.Builder.forBlock(ItemKeys.BAMBOO).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BAMBOO).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BAMBOO))) @@ -8880,7 +8916,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.SCAFFOLDING, create( - ItemBase.Builder.forBlock(ItemKeys.SCAFFOLDING).build(), + ItemDisplay.Builder.forBlock(ItemKeys.SCAFFOLDING).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.SCAFFOLDING))) @@ -8888,7 +8924,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.WHITE_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_WOOL))) @@ -8896,7 +8932,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.ORANGE_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_WOOL))) @@ -8904,7 +8940,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.MAGENTA_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_WOOL))) @@ -8912,7 +8948,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_WOOL))) @@ -8920,7 +8956,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.YELLOW_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_WOOL))) @@ -8928,7 +8964,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LIME_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_WOOL))) @@ -8936,7 +8972,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.PINK_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_WOOL))) @@ -8944,7 +8980,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.GRAY_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_WOOL))) @@ -8952,7 +8988,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_WOOL))) @@ -8960,7 +8996,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.CYAN_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_WOOL))) @@ -8968,7 +9004,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.PURPLE_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_WOOL))) @@ -8976,7 +9012,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BLUE_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_WOOL))) @@ -8984,7 +9020,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BROWN_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_WOOL))) @@ -8992,7 +9028,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.GREEN_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_WOOL))) @@ -9000,7 +9036,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.RED_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.RED_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_WOOL))) @@ -9008,7 +9044,7 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.BLACK_WOOL, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_WOOL).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_WOOL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_WOOL))) @@ -9016,162 +9052,162 @@ private void bootstrapFuel() { .build() )); this.registerable.register(ItemKeys.WHITE_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.WHITE_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.WHITE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.ORANGE_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ORANGE_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.ORANGE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.MAGENTA_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.MAGENTA_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.MAGENTA))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.LIGHT_BLUE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.YELLOW_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.YELLOW_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.YELLOW))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.LIME_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIME_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.LIME))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.PINK_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PINK_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.PINK))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GRAY_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GRAY_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.GRAY))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.LIGHT_GRAY))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.CYAN_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CYAN_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.CYAN))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.PURPLE_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.PURPLE_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.PURPLE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.BLUE_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLUE_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.BLUE))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.BROWN_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BROWN_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.BROWN))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.GREEN_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.GREEN_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.GREEN))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.RED_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.RED_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.RED_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.RED))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); this.registerable.register(ItemKeys.BLACK_CARPET, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_CARPET).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_CARPET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.BLACK_CARPET))) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.WOOL_CARPET_FUEL_TIME)) - .with(EquipmentItemComponent.of(EquipmentSlot.BODY, false, this.soundEvents.getOrThrow(SoundEventKeys.HORSE_SADDLE))) + .with(EquipmentItemComponent.of(EquippableComponent.ofCarpet(DyeColor.BLACK))) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY))) .build() )); @@ -9179,7 +9215,7 @@ private void bootstrapFuel() { private void bootstrapProjectiles() { this.registerable.register(ItemKeys.ARROW, create( - ItemBase.Builder.forItem(ItemKeys.ARROW).build(), + ItemDisplay.Builder.forItem(ItemKeys.ARROW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ProjectileItemComponent.persistentProjectile(EntityType.ARROW, ArrowEntity::new, ArrowEntity::new)) @@ -9187,7 +9223,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.SNOWBALL, create( - ItemBase.Builder.forItem(ItemKeys.SNOWBALL).build(), + ItemDisplay.Builder.forItem(ItemKeys.SNOWBALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(ThrowableItemComponent.of(1.5f)) @@ -9196,7 +9232,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.EGG, create( - ItemBase.Builder.forItem(ItemKeys.EGG).build(), + ItemDisplay.Builder.forItem(ItemKeys.EGG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(ThrowableItemComponent.of(1.5f)) @@ -9205,7 +9241,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.ENDER_PEARL, create( - ItemBase.Builder.forItem(ItemKeys.ENDER_PEARL).build(), + ItemDisplay.Builder.forItem(ItemKeys.ENDER_PEARL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(ThrowableItemComponent.of(1.5f)) @@ -9214,7 +9250,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.ENDER_EYE, create( - ItemBase.Builder.forItem(ItemKeys.ENDER_EYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.ENDER_EYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ThrowableItemComponent.of()) @@ -9258,7 +9294,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.EXPERIENCE_BOTTLE, create( - ItemBase.Builder.forItem(ItemKeys.EXPERIENCE_BOTTLE) + ItemDisplay.Builder.forItem(ItemKeys.EXPERIENCE_BOTTLE) .rarity(Rarity.UNCOMMON) .glint() .build(), @@ -9270,7 +9306,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.FIRE_CHARGE, create( - ItemBase.Builder.forItem(ItemKeys.FIRE_CHARGE).build(), + ItemDisplay.Builder.forItem(ItemKeys.FIRE_CHARGE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FireworkShapeModifierItemComponent.of(FireworkExplosionComponent.Type.LARGE_BALL)) @@ -9289,7 +9325,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.WIND_CHARGE, create( - ItemBase.Builder.forItem(ItemKeys.WIND_CHARGE).build(), + ItemDisplay.Builder.forItem(ItemKeys.WIND_CHARGE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ThrowableItemComponent.of(1.5f)) @@ -9299,7 +9335,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.FIREWORK_ROCKET, create( - ItemBase.Builder.forItem(ItemKeys.FIREWORK_ROCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.FIREWORK_ROCKET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FireworkItemComponent.INSTANCE) @@ -9308,7 +9344,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.SPLASH_POTION, create( - ItemBase.Builder.forItem(ItemKeys.SPLASH_POTION).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPLASH_POTION).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(PotionHolderItemComponent.of(1.0f)) @@ -9319,7 +9355,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.SPECTRAL_ARROW, create( - ItemBase.Builder.forItem(ItemKeys.SPECTRAL_ARROW).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPECTRAL_ARROW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ProjectileItemComponent.persistentProjectile(EntityType.SPECTRAL_ARROW, SpectralArrowEntity::new, SpectralArrowEntity::new)) @@ -9327,7 +9363,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.TIPPED_ARROW, create( - ItemBase.Builder.forItem(ItemKeys.TIPPED_ARROW).build(), + ItemDisplay.Builder.forItem(ItemKeys.TIPPED_ARROW).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(PotionHolderItemComponent.of(0.125f)) @@ -9337,7 +9373,7 @@ private void bootstrapProjectiles() { .build() )); this.registerable.register(ItemKeys.LINGERING_POTION, create( - ItemBase.Builder.forItem(ItemKeys.LINGERING_POTION).build(), + ItemDisplay.Builder.forItem(ItemKeys.LINGERING_POTION).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(PotionHolderItemComponent.of(0.25f)) @@ -9351,112 +9387,112 @@ private void bootstrapProjectiles() { private void bootstrapDyes() { this.registerable.register(ItemKeys.WHITE_DYE, create( - ItemBase.Builder.forItem(ItemKeys.WHITE_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.WHITE_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.WHITE)) .build() )); this.registerable.register(ItemKeys.ORANGE_DYE, create( - ItemBase.Builder.forItem(ItemKeys.ORANGE_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.ORANGE_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.ORANGE)) .build() )); this.registerable.register(ItemKeys.MAGENTA_DYE, create( - ItemBase.Builder.forItem(ItemKeys.MAGENTA_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.MAGENTA_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.MAGENTA)) .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_DYE, create( - ItemBase.Builder.forItem(ItemKeys.LIGHT_BLUE_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.LIGHT_BLUE_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.LIGHT_BLUE)) .build() )); this.registerable.register(ItemKeys.YELLOW_DYE, create( - ItemBase.Builder.forItem(ItemKeys.YELLOW_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.YELLOW_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.YELLOW)) .build() )); this.registerable.register(ItemKeys.LIME_DYE, create( - ItemBase.Builder.forItem(ItemKeys.LIME_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.LIME_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.LIME)) .build() )); this.registerable.register(ItemKeys.PINK_DYE, create( - ItemBase.Builder.forItem(ItemKeys.PINK_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.PINK_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.PINK)) .build() )); this.registerable.register(ItemKeys.GRAY_DYE, create( - ItemBase.Builder.forItem(ItemKeys.GRAY_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GRAY_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.GRAY)) .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_DYE, create( - ItemBase.Builder.forItem(ItemKeys.LIGHT_GRAY_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.LIGHT_GRAY_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.LIGHT_GRAY)) .build() )); this.registerable.register(ItemKeys.CYAN_DYE, create( - ItemBase.Builder.forItem(ItemKeys.CYAN_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.CYAN_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.CYAN)) .build() )); this.registerable.register(ItemKeys.PURPLE_DYE, create( - ItemBase.Builder.forItem(ItemKeys.PURPLE_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.PURPLE_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.PURPLE)) .build() )); this.registerable.register(ItemKeys.BLUE_DYE, create( - ItemBase.Builder.forItem(ItemKeys.BLUE_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.BLUE_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.BLUE)) .build() )); this.registerable.register(ItemKeys.BROWN_DYE, create( - ItemBase.Builder.forItem(ItemKeys.BROWN_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.BROWN_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.BROWN)) .build() )); this.registerable.register(ItemKeys.GREEN_DYE, create( - ItemBase.Builder.forItem(ItemKeys.GREEN_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GREEN_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.GREEN)) .build() )); this.registerable.register(ItemKeys.RED_DYE, create( - ItemBase.Builder.forItem(ItemKeys.RED_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.RED_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.RED)) .build() )); this.registerable.register(ItemKeys.BLACK_DYE, create( - ItemBase.Builder.forItem(ItemKeys.BLACK_DYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.BLACK_DYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DyeItemComponent.of(DyeColor.BLACK)) @@ -9466,7 +9502,7 @@ private void bootstrapDyes() { private void bootstrapRecords() { this.registerable.register(ItemKeys.MUSIC_DISC_13, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_13) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_13) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9474,7 +9510,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_CAT, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CAT) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_CAT) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9482,7 +9518,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_BLOCKS, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_BLOCKS) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_BLOCKS) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9490,7 +9526,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_CHIRP, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CHIRP) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_CHIRP) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9498,7 +9534,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_CREATOR, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -9506,7 +9542,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_CREATOR_MUSIC_BOX, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR_MUSIC_BOX) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_CREATOR_MUSIC_BOX) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9515,7 +9551,7 @@ private void bootstrapRecords() { )); this.registerable.register(ItemKeys.MUSIC_DISC_FAR, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_FAR) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_FAR) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9523,7 +9559,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_MALL, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_MALL) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_MALL) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9531,7 +9567,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_MELLOHI, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_MELLOHI) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_MELLOHI) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9539,7 +9575,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_STAL, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_STAL) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_STAL) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9547,7 +9583,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_STRAD, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_STRAD) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_STRAD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9555,7 +9591,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_WARD, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_WARD) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_WARD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9563,7 +9599,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_11, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_11) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_11) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9571,7 +9607,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_WAIT, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_WAIT) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_WAIT) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9579,7 +9615,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_OTHERSIDE, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_OTHERSIDE) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_OTHERSIDE) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -9587,7 +9623,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_RELIC, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_RELIC) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_RELIC) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9595,7 +9631,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_PIGSTEP, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_PIGSTEP) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_PIGSTEP) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -9603,7 +9639,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_PRECIPICE, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_PRECIPICE) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_PRECIPICE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9611,7 +9647,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.MUSIC_DISC_5, create( - ItemBase.Builder.forItem(ItemKeys.MUSIC_DISC_5) + ItemDisplay.Builder.forItem(ItemKeys.MUSIC_DISC_5) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9619,7 +9655,7 @@ private void bootstrapRecords() { .build() )); this.registerable.register(ItemKeys.DISC_FRAGMENT_5, create( - ItemBase.Builder.forItem(ItemKeys.DISC_FRAGMENT_5) + ItemDisplay.Builder.forItem(ItemKeys.DISC_FRAGMENT_5) .rarity(Rarity.UNCOMMON) .tooltip(ItemKeys.DISC_FRAGMENT_5) .build(), @@ -9631,63 +9667,63 @@ private void bootstrapRecords() { private void bootstrapBuckets() { this.registerable.register(ItemKeys.BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.fluid(this.fluids.getOrThrow(FluidKeys.EMPTY), this.dispenseBehaviors)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.USE_BUCKET))) .build() )); this.registerable.register(ItemKeys.WATER_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.WATER_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.WATER_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.fluid(this.fluids.getOrThrow(FluidKeys.WATER), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.LAVA_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.LAVA_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.LAVA_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.fluid(this.fluids.getOrThrow(FluidKeys.LAVA), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_LAVA), this.items, this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.LAVA_FUEL_TIME, this.items.getOrThrow(ItemKeys.BUCKET))) .build() )); this.registerable.register(ItemKeys.POWDER_SNOW_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.POWDER_SNOW_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.POWDER_SNOW_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.block(this.blocks.getOrThrow(BlockKeys.POWDER_SNOW), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_POWDER_SNOW), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.PUFFERFISH_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.PUFFERFISH_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.PUFFERFISH_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.PUFFERFISH), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_FISH), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.SALMON_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.SALMON_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.SALMON_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.SALMON), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_FISH), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.COD_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.COD_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.COD_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.COD), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_FISH), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TROPICAL_FISH_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.TROPICAL_FISH_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.TROPICAL_FISH_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.TROPICAL_FISH), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_FISH), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.AXOLOTL_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.AXOLOTL_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.AXOLOTL_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.AXOLOTL), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_AXOLOTL), this.items, this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TADPOLE_BUCKET, create( - ItemBase.Builder.forItem(ItemKeys.TADPOLE_BUCKET).build(), + ItemDisplay.Builder.forItem(ItemKeys.TADPOLE_BUCKET).build(), ItemComponentSet.builder() .with(BucketItemComponent.entity(this.fluids.getOrThrow(FluidKeys.WATER), this.entityTypes.getOrThrow(EntityTypeKeys.TADPOLE), this.soundEvents.getOrThrow(SoundEventKeys.BUCKET_EMPTY_TADPOLE), this.items, this.dispenseBehaviors)) .build() @@ -9696,7 +9732,7 @@ private void bootstrapBuckets() { private void bootstrapSmithingTemplates() { this.registerable.register(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_UPGRADE_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9704,7 +9740,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9712,7 +9748,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9720,7 +9756,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.COAST_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9728,7 +9764,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.WILD_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9736,7 +9772,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.WARD_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9744,7 +9780,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.EYE_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9752,7 +9788,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.VEX_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9760,7 +9796,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9768,7 +9804,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9776,7 +9812,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.RIB_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9784,7 +9820,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9792,7 +9828,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9800,7 +9836,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9808,7 +9844,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -9816,7 +9852,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9824,7 +9860,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.HOST_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9832,7 +9868,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9840,7 +9876,7 @@ private void bootstrapSmithingTemplates() { .build() )); this.registerable.register(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE, create( - ItemBase.Builder.forItem(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE) + ItemDisplay.Builder.forItem(ItemKeys.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -9852,7 +9888,7 @@ private void bootstrapSmithingTemplates() { private void bootstrapBanners() { this.bootstrapBannerPatterns(); this.registerable.register(ItemKeys.WHITE_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.WHITE_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.WHITE_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.WHITE_BANNER), this.blocks.getOrThrow(BlockKeys.WHITE_WALL_BANNER), Direction.DOWN)) @@ -9861,7 +9897,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.ORANGE_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.ORANGE_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ORANGE_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.ORANGE_BANNER), this.blocks.getOrThrow(BlockKeys.ORANGE_WALL_BANNER), Direction.DOWN)) @@ -9870,7 +9906,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.MAGENTA_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.MAGENTA_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.MAGENTA_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.MAGENTA_BANNER), this.blocks.getOrThrow(BlockKeys.MAGENTA_WALL_BANNER), Direction.DOWN)) @@ -9879,7 +9915,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.LIGHT_BLUE_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_BLUE_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_BLUE_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_BANNER), this.blocks.getOrThrow(BlockKeys.LIGHT_BLUE_WALL_BANNER), Direction.DOWN)) @@ -9888,7 +9924,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.YELLOW_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.YELLOW_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.YELLOW_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.YELLOW_BANNER), this.blocks.getOrThrow(BlockKeys.YELLOW_WALL_BANNER), Direction.DOWN)) @@ -9897,7 +9933,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.LIME_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.LIME_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIME_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.LIME_BANNER), this.blocks.getOrThrow(BlockKeys.LIME_WALL_BANNER), Direction.DOWN)) @@ -9906,7 +9942,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.PINK_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.PINK_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PINK_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.PINK_BANNER), this.blocks.getOrThrow(BlockKeys.PINK_WALL_BANNER), Direction.DOWN)) @@ -9915,7 +9951,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.GRAY_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.GRAY_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GRAY_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.GRAY_BANNER), this.blocks.getOrThrow(BlockKeys.GRAY_WALL_BANNER), Direction.DOWN)) @@ -9924,7 +9960,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.LIGHT_GRAY_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.LIGHT_GRAY_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.LIGHT_GRAY_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_BANNER), this.blocks.getOrThrow(BlockKeys.LIGHT_GRAY_WALL_BANNER), Direction.DOWN)) @@ -9933,7 +9969,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.CYAN_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.CYAN_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.CYAN_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.CYAN_BANNER), this.blocks.getOrThrow(BlockKeys.CYAN_WALL_BANNER), Direction.DOWN)) @@ -9942,7 +9978,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.PURPLE_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.PURPLE_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.PURPLE_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.PURPLE_BANNER), this.blocks.getOrThrow(BlockKeys.PURPLE_WALL_BANNER), Direction.DOWN)) @@ -9951,7 +9987,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.BLUE_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.BLUE_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLUE_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BLUE_BANNER), this.blocks.getOrThrow(BlockKeys.BLUE_WALL_BANNER), Direction.DOWN)) @@ -9960,7 +9996,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.BROWN_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.BROWN_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BROWN_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BROWN_BANNER), this.blocks.getOrThrow(BlockKeys.BROWN_WALL_BANNER), Direction.DOWN)) @@ -9969,7 +10005,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.GREEN_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.GREEN_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.GREEN_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.GREEN_BANNER), this.blocks.getOrThrow(BlockKeys.GREEN_WALL_BANNER), Direction.DOWN)) @@ -9978,7 +10014,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.RED_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.RED_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.RED_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.RED_BANNER), this.blocks.getOrThrow(BlockKeys.RED_WALL_BANNER), Direction.DOWN)) @@ -9987,7 +10023,7 @@ private void bootstrapBanners() { .build() )); this.registerable.register(ItemKeys.BLACK_BANNER, create( - ItemBase.Builder.forBlock(ItemKeys.BLACK_BANNER).build(), + ItemDisplay.Builder.forBlock(ItemKeys.BLACK_BANNER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(16)) .with(BlockItemComponent.attachedToSide(this.blocks.getOrThrow(BlockKeys.BLACK_BANNER), this.blocks.getOrThrow(BlockKeys.BLACK_WALL_BANNER), Direction.DOWN)) @@ -9999,13 +10035,13 @@ private void bootstrapBanners() { private void bootstrapBannerPatterns() { this.registerable.register(ItemKeys.FLOWER_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.FLOWER_BANNER_PATTERN).build(), + ItemDisplay.Builder.forItem(ItemKeys.FLOWER_BANNER_PATTERN).build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.FLOWER_PATTERN_ITEM)) .build() )); this.registerable.register(ItemKeys.CREEPER_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.CREEPER_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.CREEPER_BANNER_PATTERN) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10013,7 +10049,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.SKULL_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.SKULL_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.SKULL_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10021,7 +10057,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.MOJANG_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.MOJANG_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.MOJANG_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10029,13 +10065,13 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.GLOBE_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.GLOBE_BANNER_PATTERN).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOBE_BANNER_PATTERN).build(), ItemComponentSet.builder() .with(BannerPatternItemComponent.of(BannerPatternTags.GLOBE_PATTERN_ITEM)) .build() )); this.registerable.register(ItemKeys.PIGLIN_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.PIGLIN_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.PIGLIN_BANNER_PATTERN) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10043,7 +10079,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.FLOW_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.FLOW_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.FLOW_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10051,7 +10087,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.GUSTER_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.GUSTER_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.GUSTER_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10059,7 +10095,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.FIELD_MASONED_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.FIELD_MASONED_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.FIELD_MASONED_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10067,7 +10103,7 @@ private void bootstrapBannerPatterns() { .build() )); this.registerable.register(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN, create( - ItemBase.Builder.forItem(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN) + ItemDisplay.Builder.forItem(ItemKeys.BORDURE_INDENTED_BANNER_PATTERN) .rarity(Rarity.RARE) .build(), ItemComponentSet.builder() @@ -10078,14 +10114,14 @@ private void bootstrapBannerPatterns() { private void bootstrapDecoratedPotPatterns() { this.registerable.register(ItemKeys.BRICK, create( - ItemBase.Builder.forItem(ItemKeys.BRICK).build(), + ItemDisplay.Builder.forItem(ItemKeys.BRICK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DecoratedPotPatternItemComponent.of(this.decoratedPotPatterns.getOrThrow(DecoratedPotPatterns.BLANK))) .build() )); this.registerable.register(ItemKeys.ANGLER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ANGLER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.ANGLER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10093,7 +10129,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.ARCHER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ARCHER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.ARCHER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10101,7 +10137,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.ARMS_UP_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.ARMS_UP_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.ARMS_UP_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10109,7 +10145,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.BLADE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BLADE_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.BLADE_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10117,7 +10153,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.BREWER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BREWER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.BREWER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10125,7 +10161,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.BURN_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.BURN_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.BURN_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10133,7 +10169,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.DANGER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.DANGER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.DANGER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10141,7 +10177,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.EXPLORER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.EXPLORER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.EXPLORER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10149,7 +10185,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.FLOW_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.FLOW_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.FLOW_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10157,7 +10193,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.FRIEND_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.FRIEND_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.FRIEND_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10165,7 +10201,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.GUSTER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.GUSTER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.GUSTER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10173,7 +10209,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.HEART_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HEART_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.HEART_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10181,7 +10217,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.HEARTBREAK_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HEARTBREAK_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.HEARTBREAK_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10189,7 +10225,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.HOWL_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.HOWL_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.HOWL_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10197,7 +10233,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.MINER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.MINER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.MINER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10205,7 +10241,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.MOURNER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.MOURNER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.MOURNER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10213,7 +10249,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.PLENTY_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.PLENTY_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.PLENTY_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10221,7 +10257,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.PRIZE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.PRIZE_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.PRIZE_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10229,7 +10265,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.SCRAPE_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SCRAPE_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.SCRAPE_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10237,7 +10273,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.SHEAF_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SHEAF_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.SHEAF_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10245,7 +10281,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.SHELTER_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SHELTER_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.SHELTER_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10253,7 +10289,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.SKULL_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SKULL_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.SKULL_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10261,7 +10297,7 @@ private void bootstrapDecoratedPotPatterns() { .build() )); this.registerable.register(ItemKeys.SNORT_POTTERY_SHERD, create( - ItemBase.Builder.forItem(ItemKeys.SNORT_POTTERY_SHERD) + ItemDisplay.Builder.forItem(ItemKeys.SNORT_POTTERY_SHERD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10272,7 +10308,7 @@ private void bootstrapDecoratedPotPatterns() { private void bootstrapImmuneToDamage() { this.registerable.register(ItemKeys.ANCIENT_DEBRIS, create( - ItemBase.Builder.forBlock(ItemKeys.ANCIENT_DEBRIS).build(), + ItemDisplay.Builder.forBlock(ItemKeys.ANCIENT_DEBRIS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.ANCIENT_DEBRIS))) @@ -10280,7 +10316,7 @@ private void bootstrapImmuneToDamage() { .build() )); this.registerable.register(ItemKeys.NETHERITE_BLOCK, create( - ItemBase.Builder.forBlock(ItemKeys.NETHERITE_BLOCK).build(), + ItemDisplay.Builder.forBlock(ItemKeys.NETHERITE_BLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.NETHERITE_BLOCK))) @@ -10288,21 +10324,21 @@ private void bootstrapImmuneToDamage() { .build() )); this.registerable.register(ItemKeys.NETHERITE_INGOT, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_INGOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_INGOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHERITE_SCRAP, create( - ItemBase.Builder.forItem(ItemKeys.NETHERITE_SCRAP).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHERITE_SCRAP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(ImmuneToDamageItemComponent.of(DamageTypeTags.IS_FIRE)) .build() )); this.registerable.register(ItemKeys.NETHER_STAR, create( - ItemBase.Builder.forItem(ItemKeys.NETHER_STAR) + ItemDisplay.Builder.forItem(ItemKeys.NETHER_STAR) .rarity(Rarity.RARE) .glint() .build(), @@ -10315,10 +10351,10 @@ private void bootstrapImmuneToDamage() { private void bootstrapMiscellaneous() { this.registerable.register(ItemKeys.AIR, create( - ItemBase.Builder.forBlock(ItemKeys.AIR).build() + ItemDisplay.Builder.forBlock(ItemKeys.AIR).build() )); this.registerable.register(ItemKeys.SADDLE, create( - ItemBase.Builder.forItem(ItemKeys.SADDLE).build(), + ItemDisplay.Builder.forItem(ItemKeys.SADDLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(SaddleItemComponent.INSTANCE) @@ -10326,135 +10362,135 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.TURTLE_SCUTE, create( - ItemBase.Builder.forItem(ItemKeys.TURTLE_SCUTE).build(), + ItemDisplay.Builder.forItem(ItemKeys.TURTLE_SCUTE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.ARMADILLO_SCUTE, create( - ItemBase.Builder.forItem(ItemKeys.ARMADILLO_SCUTE).build(), + ItemDisplay.Builder.forItem(ItemKeys.ARMADILLO_SCUTE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.DIAMOND, create( - ItemBase.Builder.forItem(ItemKeys.DIAMOND).build(), + ItemDisplay.Builder.forItem(ItemKeys.DIAMOND).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.EMERALD, create( - ItemBase.Builder.forItem(ItemKeys.EMERALD).build(), + ItemDisplay.Builder.forItem(ItemKeys.EMERALD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.LAPIS_LAZULI, create( - ItemBase.Builder.forItem(ItemKeys.LAPIS_LAZULI).build(), + ItemDisplay.Builder.forItem(ItemKeys.LAPIS_LAZULI).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.QUARTZ, create( - ItemBase.Builder.forItem(ItemKeys.QUARTZ).build(), + ItemDisplay.Builder.forItem(ItemKeys.QUARTZ).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.AMETHYST_SHARD, create( - ItemBase.Builder.forItem(ItemKeys.AMETHYST_SHARD).build(), + ItemDisplay.Builder.forItem(ItemKeys.AMETHYST_SHARD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.RAW_IRON, create( - ItemBase.Builder.forItem(ItemKeys.RAW_IRON).build(), + ItemDisplay.Builder.forItem(ItemKeys.RAW_IRON).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.IRON_INGOT, create( - ItemBase.Builder.forItem(ItemKeys.IRON_INGOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_INGOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.RAW_COPPER, create( - ItemBase.Builder.forItem(ItemKeys.RAW_COPPER).build(), + ItemDisplay.Builder.forItem(ItemKeys.RAW_COPPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.COPPER_INGOT, create( - ItemBase.Builder.forItem(ItemKeys.COPPER_INGOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.COPPER_INGOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.RAW_GOLD, create( - ItemBase.Builder.forItem(ItemKeys.RAW_GOLD).build(), + ItemDisplay.Builder.forItem(ItemKeys.RAW_GOLD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.GOLD_INGOT, create( - ItemBase.Builder.forItem(ItemKeys.GOLD_INGOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLD_INGOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.FEATHER, create( - ItemBase.Builder.forItem(ItemKeys.FEATHER).build(), + ItemDisplay.Builder.forItem(ItemKeys.FEATHER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FireworkShapeModifierItemComponent.of(FireworkExplosionComponent.Type.BURST)) .build() )); this.registerable.register(ItemKeys.GUNPOWDER, create( - ItemBase.Builder.forItem(ItemKeys.GUNPOWDER).build(), + ItemDisplay.Builder.forItem(ItemKeys.GUNPOWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.FLINT, create( - ItemBase.Builder.forItem(ItemKeys.FLINT).build(), + ItemDisplay.Builder.forItem(ItemKeys.FLINT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.LEATHER, create( - ItemBase.Builder.forItem(ItemKeys.LEATHER).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEATHER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.CLAY_BALL, create( - ItemBase.Builder.forItem(ItemKeys.CLAY_BALL).build(), + ItemDisplay.Builder.forItem(ItemKeys.CLAY_BALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.PAPER, create( - ItemBase.Builder.forItem(ItemKeys.PAPER).build(), + ItemDisplay.Builder.forItem(ItemKeys.PAPER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.BOOK, create( - ItemBase.Builder.forItem(ItemKeys.BOOK).build(), + ItemDisplay.Builder.forItem(ItemKeys.BOOK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(EnchantableItemComponent.ofTransforming(1, this.items.getOrThrow(ItemKeys.ENCHANTED_BOOK))) .build() )); this.registerable.register(ItemKeys.SLIME_BALL, create( - ItemBase.Builder.forItem(ItemKeys.SLIME_BALL).build(), + ItemDisplay.Builder.forItem(ItemKeys.SLIME_BALL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.COMPASS, create( - ItemBase.Builder.forItem(ItemKeys.COMPASS).build(), + ItemDisplay.Builder.forItem(ItemKeys.COMPASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(PointableItemComponent.of(this.pointers.getOrThrow(PointerKeys.SPAWN_LOCATION), Util.createTranslationKey("item", Identifier.ofVanilla("lodestone_compass")))) @@ -10476,7 +10512,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.RECOVERY_COMPASS, create( - ItemBase.Builder.forItem(ItemKeys.RECOVERY_COMPASS) + ItemDisplay.Builder.forItem(ItemKeys.RECOVERY_COMPASS) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10485,11 +10521,14 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.BUNDLE, create( - ItemBase.Builder.forItem(ItemKeys.BUNDLE) + ItemDisplay.Builder.forItem(ItemKeys.BUNDLE) .itemBarStyle(ItemBarStyleKeys.BUNDLE) .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) + .with(UseableItemComponent.builder() + .useFor(BundleItemAccessor.useDuration()) + .build()) .with(ItemHolderItemComponent.of( 1, ItemHolderRules.builder() @@ -10509,13 +10548,13 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.CLOCK, create( - ItemBase.Builder.forItem(ItemKeys.CLOCK).build(), + ItemDisplay.Builder.forItem(ItemKeys.CLOCK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.SPYGLASS, create( - ItemBase.Builder.forItem(ItemKeys.SPYGLASS).build(), + ItemDisplay.Builder.forItem(ItemKeys.SPYGLASS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(ZoomItemComponent.of(SpyglassItem.FOV_MULTIPLIER, this.soundEvents.getOrThrow(SoundEventKeys.SPYGLASS_USE), this.soundEvents.getOrThrow(SoundEventKeys.SPYGLASS_STOP_USING))) @@ -10526,13 +10565,13 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.GLOWSTONE_DUST, create( - ItemBase.Builder.forItem(ItemKeys.GLOWSTONE_DUST).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOWSTONE_DUST).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.INK_SAC, create( - ItemBase.Builder.forItem(ItemKeys.INK_SAC).build(), + ItemDisplay.Builder.forItem(ItemKeys.INK_SAC).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build(), @@ -10541,7 +10580,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.GLOW_INK_SAC, create( - ItemBase.Builder.forItem(ItemKeys.GLOW_INK_SAC).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLOW_INK_SAC).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build(), @@ -10550,7 +10589,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.BONE_MEAL, create( - ItemBase.Builder.forItem(ItemKeys.BONE_MEAL).build(), + ItemDisplay.Builder.forItem(ItemKeys.BONE_MEAL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.USE_ITEM_ON_BLOCK))) @@ -10560,19 +10599,19 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.BONE, create( - ItemBase.Builder.forItem(ItemKeys.BONE).build(), + ItemDisplay.Builder.forItem(ItemKeys.BONE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.SUGAR, create( - ItemBase.Builder.forItem(ItemKeys.SUGAR).build(), + ItemDisplay.Builder.forItem(ItemKeys.SUGAR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.FILLED_MAP, create( - ItemBase.Builder.forItem(ItemKeys.FILLED_MAP).build(), + ItemDisplay.Builder.forItem(ItemKeys.FILLED_MAP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(MapHolderItemComponent.INSTANCE) @@ -10587,20 +10626,20 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.GHAST_TEAR, create( - ItemBase.Builder.forItem(ItemKeys.GHAST_TEAR).build(), + ItemDisplay.Builder.forItem(ItemKeys.GHAST_TEAR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.GOLD_NUGGET, create( - ItemBase.Builder.forItem(ItemKeys.GOLD_NUGGET).build(), + ItemDisplay.Builder.forItem(ItemKeys.GOLD_NUGGET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FireworkShapeModifierItemComponent.of(FireworkExplosionComponent.Type.STAR)) .build() )); this.registerable.register(ItemKeys.GLASS_BOTTLE, create( - ItemBase.Builder.forItem(ItemKeys.GLASS_BOTTLE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLASS_BOTTLE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.GLASS_BOTTLE))) @@ -10628,38 +10667,38 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.FERMENTED_SPIDER_EYE, create( - ItemBase.Builder.forItem(ItemKeys.FERMENTED_SPIDER_EYE).build(), + ItemDisplay.Builder.forItem(ItemKeys.FERMENTED_SPIDER_EYE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.BLAZE_POWDER, create( - ItemBase.Builder.forItem(ItemKeys.BLAZE_POWDER).build(), + ItemDisplay.Builder.forItem(ItemKeys.BLAZE_POWDER).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.MAGMA_CREAM, create( - ItemBase.Builder.forItem(ItemKeys.MAGMA_CREAM).build(), + ItemDisplay.Builder.forItem(ItemKeys.MAGMA_CREAM).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.GLISTERING_MELON_SLICE, create( - ItemBase.Builder.forItem(ItemKeys.GLISTERING_MELON_SLICE).build(), + ItemDisplay.Builder.forItem(ItemKeys.GLISTERING_MELON_SLICE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.WRITABLE_BOOK, create( - ItemBase.Builder.forItem(ItemKeys.WRITABLE_BOOK).build(), + ItemDisplay.Builder.forItem(ItemKeys.WRITABLE_BOOK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) .with(WritableItemComponent.of(this.items.getOrThrow(ItemKeys.WRITTEN_BOOK))) .build() )); this.registerable.register(ItemKeys.WRITTEN_BOOK, create( - ItemBase.Builder.forItem(ItemKeys.WRITTEN_BOOK) + ItemDisplay.Builder.forItem(ItemKeys.WRITTEN_BOOK) .glint() .build(), ItemComponentSet.builder() @@ -10671,14 +10710,14 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.MAP, create( - ItemBase.Builder.forItem(ItemKeys.MAP).build(), + ItemDisplay.Builder.forItem(ItemKeys.MAP).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(MappableItemComponent.of(this.items.getOrThrow(ItemKeys.FILLED_MAP))) .build() )); this.registerable.register(ItemKeys.FIREWORK_STAR, create( - ItemBase.Builder.forItem(ItemKeys.FIREWORK_STAR).build(), + ItemDisplay.Builder.forItem(ItemKeys.FIREWORK_STAR).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(FireworkExplosionHolderItemComponent.INSTANCE) @@ -10686,7 +10725,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.ENCHANTED_BOOK, create( - ItemBase.Builder.forItem(ItemKeys.ENCHANTED_BOOK) + ItemDisplay.Builder.forItem(ItemKeys.ENCHANTED_BOOK) .rarity(Rarity.UNCOMMON) .glint() .build(), @@ -10696,37 +10735,37 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.NETHER_BRICK, create( - ItemBase.Builder.forItem(ItemKeys.NETHER_BRICK).build(), + ItemDisplay.Builder.forItem(ItemKeys.NETHER_BRICK).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.PRISMARINE_SHARD, create( - ItemBase.Builder.forItem(ItemKeys.PRISMARINE_SHARD).build(), + ItemDisplay.Builder.forItem(ItemKeys.PRISMARINE_SHARD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.PRISMARINE_CRYSTALS, create( - ItemBase.Builder.forItem(ItemKeys.PRISMARINE_CRYSTALS).build(), + ItemDisplay.Builder.forItem(ItemKeys.PRISMARINE_CRYSTALS).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.RABBIT_FOOT, create( - ItemBase.Builder.forItem(ItemKeys.RABBIT_FOOT).build(), + ItemDisplay.Builder.forItem(ItemKeys.RABBIT_FOOT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.RABBIT_HIDE, create( - ItemBase.Builder.forItem(ItemKeys.RABBIT_HIDE).build(), + ItemDisplay.Builder.forItem(ItemKeys.RABBIT_HIDE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.LEAD, create( - ItemBase.Builder.forItem(ItemKeys.LEAD).build(), + ItemDisplay.Builder.forItem(ItemKeys.LEAD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build(), @@ -10739,7 +10778,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.NAME_TAG, create( - ItemBase.Builder.forItem(ItemKeys.NAME_TAG).build(), + ItemDisplay.Builder.forItem(ItemKeys.NAME_TAG).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build(), @@ -10753,13 +10792,13 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.POPPED_CHORUS_FRUIT, create( - ItemBase.Builder.forItem(ItemKeys.POPPED_CHORUS_FRUIT).build(), + ItemDisplay.Builder.forItem(ItemKeys.POPPED_CHORUS_FRUIT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.DRAGON_BREATH, create( - ItemBase.Builder.forItem(ItemKeys.DRAGON_BREATH) + ItemDisplay.Builder.forItem(ItemKeys.DRAGON_BREATH) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10767,7 +10806,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.TOTEM_OF_UNDYING, create( - ItemBase.Builder.forItem(ItemKeys.TOTEM_OF_UNDYING) + ItemDisplay.Builder.forItem(ItemKeys.TOTEM_OF_UNDYING) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10780,19 +10819,19 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.SHULKER_SHELL, create( - ItemBase.Builder.forItem(ItemKeys.SHULKER_SHELL).build(), + ItemDisplay.Builder.forItem(ItemKeys.SHULKER_SHELL).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.IRON_NUGGET, create( - ItemBase.Builder.forItem(ItemKeys.IRON_NUGGET).build(), + ItemDisplay.Builder.forItem(ItemKeys.IRON_NUGGET).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.KNOWLEDGE_BOOK, create( - ItemBase.Builder.forItem(ItemKeys.KNOWLEDGE_BOOK) + ItemDisplay.Builder.forItem(ItemKeys.KNOWLEDGE_BOOK) .rarity(Rarity.EPIC) .build(), ItemComponentSet.builder() @@ -10801,7 +10840,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.DEBUG_STICK, create( - ItemBase.Builder.forItem(ItemKeys.DEBUG_STICK) + ItemDisplay.Builder.forItem(ItemKeys.DEBUG_STICK) .rarity(Rarity.EPIC) .glint() .build(), @@ -10811,13 +10850,13 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.PHANTOM_MEMBRANE, create( - ItemBase.Builder.forItem(ItemKeys.PHANTOM_MEMBRANE).build(), + ItemDisplay.Builder.forItem(ItemKeys.PHANTOM_MEMBRANE).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.NAUTILUS_SHELL, create( - ItemBase.Builder.forItem(ItemKeys.NAUTILUS_SHELL) + ItemDisplay.Builder.forItem(ItemKeys.NAUTILUS_SHELL) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10825,7 +10864,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.HEART_OF_THE_SEA, create( - ItemBase.Builder.forItem(ItemKeys.HEART_OF_THE_SEA) + ItemDisplay.Builder.forItem(ItemKeys.HEART_OF_THE_SEA) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10833,7 +10872,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.GOAT_HORN, create( - ItemBase.Builder.forItem(ItemKeys.GOAT_HORN) + ItemDisplay.Builder.forItem(ItemKeys.GOAT_HORN) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10842,7 +10881,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.HONEYCOMB, create( - ItemBase.Builder.forItem(ItemKeys.HONEYCOMB).build(), + ItemDisplay.Builder.forItem(ItemKeys.HONEYCOMB).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.WAX_BLOCK))) @@ -10858,7 +10897,7 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.ECHO_SHARD, create( - ItemBase.Builder.forItem(ItemKeys.ECHO_SHARD) + ItemDisplay.Builder.forItem(ItemKeys.ECHO_SHARD) .rarity(Rarity.UNCOMMON) .build(), ItemComponentSet.builder() @@ -10866,19 +10905,19 @@ private void bootstrapMiscellaneous() { .build() )); this.registerable.register(ItemKeys.TRIAL_KEY, create( - ItemBase.Builder.forItem(ItemKeys.TRIAL_KEY).build(), + ItemDisplay.Builder.forItem(ItemKeys.TRIAL_KEY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.OMINOUS_TRIAL_KEY, create( - ItemBase.Builder.forItem(ItemKeys.OMINOUS_TRIAL_KEY).build(), + ItemDisplay.Builder.forItem(ItemKeys.OMINOUS_TRIAL_KEY).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() )); this.registerable.register(ItemKeys.BREEZE_ROD, create( - ItemBase.Builder.forItem(ItemKeys.BREEZE_ROD).build(), + ItemDisplay.Builder.forItem(ItemKeys.BREEZE_ROD).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(64)) .build() diff --git a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java b/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java deleted file mode 100644 index 37c94f06..00000000 --- a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterial.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.errorcraft.itematic.item.armor; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.entity.EquipmentSlotUtil; -import net.minecraft.component.type.AttributeModifierSlot; -import net.minecraft.component.type.AttributeModifiersComponent; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.attribute.EntityAttributeModifier; -import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.item.ArmorItem; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Identifier; -import net.minecraft.util.StringIdentifiable; - -import java.util.Map; - -public record ArmorMaterial(Identifier assetId, Map defense, double toughness, double knockbackResistance) { - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Identifier.CODEC.fieldOf("asset_id").forGetter(ArmorMaterial::assetId), - Codec.simpleMap(ArmorItem.Type.CODEC, Codec.INT, StringIdentifiable.toKeyable(ArmorItem.Type.values())).fieldOf("defense").forGetter(ArmorMaterial::defense), - Codec.DOUBLE.fieldOf("toughness").forGetter(ArmorMaterial::toughness), - Codec.DOUBLE.fieldOf("knockback_resistance").forGetter(ArmorMaterial::knockbackResistance) - ).apply(instance, ArmorMaterial::new)); - - public int defense(EquipmentSlot slot) { - ArmorItem.Type type = EquipmentSlotUtil.armorType(slot); - if (type == null) { - return 0; - } - - return this.defense.getOrDefault(type, 0); - } - - public Identifier textureId(boolean secondLayer) { - if (secondLayer) { - this.assetId.withPath(path -> "models/armor/" + path + "_layer_2"); - } - - return this.assetId.withPath(path -> "models/armor/" + path + "_layer_1"); - } - - public void addAttributes(AttributeModifiersComponent.Builder builder, EquipmentSlot slot) { - ArmorItem.Type type = EquipmentSlotUtil.armorType(slot); - if (type == null) { - return; - } - - Identifier id = Identifier.ofVanilla("armor." + type.getName()); - AttributeModifierSlot attributeModifierSlot = AttributeModifierSlot.forEquipmentSlot(slot); - builder.add( - EntityAttributes.ARMOR, - new EntityAttributeModifier( - id, - this.defense(slot), - EntityAttributeModifier.Operation.ADD_VALUE - ), - attributeModifierSlot - ); - builder.add( - EntityAttributes.ARMOR_TOUGHNESS, - new EntityAttributeModifier( - id, - this.toughness, - EntityAttributeModifier.Operation.ADD_VALUE - ), - attributeModifierSlot - ); - if (this.knockbackResistance > 0.0d) { - builder.add( - EntityAttributes.KNOCKBACK_RESISTANCE, - new EntityAttributeModifier( - id, - this.knockbackResistance, - EntityAttributeModifier.Operation.ADD_VALUE - ), - attributeModifierSlot - ); - } - } - - public static ArmorMaterial from(Identifier assetId, RegistryEntry material) { - return new ArmorMaterial(assetId, material.value().defense(), material.value().toughness(), material.value().knockbackResistance()); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterialKeys.java b/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterialKeys.java deleted file mode 100644 index f1617b88..00000000 --- a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterialKeys.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.errorcraft.itematic.item.armor; - -import net.errorcraft.itematic.registry.ItematicRegistryKeys; -import net.minecraft.registry.RegistryKey; -import net.minecraft.util.Identifier; - -public class ArmorMaterialKeys { - public static final RegistryKey LEATHER = register("leather"); - public static final RegistryKey CHAINMAIL = register("chainmail"); - public static final RegistryKey IRON = register("iron"); - public static final RegistryKey GOLD = register("gold"); - public static final RegistryKey DIAMOND = register("diamond"); - public static final RegistryKey NETHERITE = register("netherite"); - public static final RegistryKey TURTLE = register("turtle"); - public static final RegistryKey ARMADILLO = register("armadillo"); - - private ArmorMaterialKeys() {} - - private static RegistryKey register(String name) { - return RegistryKey.of(ItematicRegistryKeys.ARMOR_MATERIAL, Identifier.ofVanilla(name)); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterials.java b/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterials.java deleted file mode 100644 index a87d5029..00000000 --- a/src/main/java/net/errorcraft/itematic/item/armor/ArmorMaterials.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.errorcraft.itematic.item.armor; - -import net.minecraft.registry.Registerable; -import net.minecraft.util.Identifier; - -public class ArmorMaterials { - private ArmorMaterials() {} - - public static void bootstrap(Registerable registerable) { - registerable.register(ArmorMaterialKeys.LEATHER, ArmorMaterial.from(Identifier.ofVanilla("leather"), net.minecraft.item.ArmorMaterials.LEATHER)); - registerable.register(ArmorMaterialKeys.CHAINMAIL, ArmorMaterial.from(Identifier.ofVanilla("chainmail"), net.minecraft.item.ArmorMaterials.CHAIN)); - registerable.register(ArmorMaterialKeys.IRON, ArmorMaterial.from(Identifier.ofVanilla("iron"), net.minecraft.item.ArmorMaterials.IRON)); - registerable.register(ArmorMaterialKeys.GOLD, ArmorMaterial.from(Identifier.ofVanilla("gold"), net.minecraft.item.ArmorMaterials.GOLD)); - registerable.register(ArmorMaterialKeys.DIAMOND, ArmorMaterial.from(Identifier.ofVanilla("diamond"), net.minecraft.item.ArmorMaterials.DIAMOND)); - registerable.register(ArmorMaterialKeys.NETHERITE, ArmorMaterial.from(Identifier.ofVanilla("netherite"), net.minecraft.item.ArmorMaterials.NETHERITE)); - registerable.register(ArmorMaterialKeys.TURTLE, ArmorMaterial.from(Identifier.ofVanilla("turtle"), net.minecraft.item.ArmorMaterials.TURTLE)); - registerable.register(ArmorMaterialKeys.ARMADILLO, ArmorMaterial.from(Identifier.ofVanilla("armadillo"), net.minecraft.item.ArmorMaterials.ARMADILLO)); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/color/colors/DyeableItemColor.java b/src/main/java/net/errorcraft/itematic/item/color/colors/DyeableItemColor.java index 982b4fa4..d737903b 100644 --- a/src/main/java/net/errorcraft/itematic/item/color/colors/DyeableItemColor.java +++ b/src/main/java/net/errorcraft/itematic/item/color/colors/DyeableItemColor.java @@ -28,7 +28,7 @@ public int color(ItemStack stack, int tintIndex) { if (tintIndex != this.index) { return DEFAULT_COLOR; } - return stack.itematic$getComponent(ItemComponentTypes.DYEABLE) + return stack.itematic$getBehavior(ItemComponentTypes.DYEABLE) .map(c -> c.getColor(stack)) .orElse(DEFAULT_COLOR); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java index df4a5703..d3121ff0 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java @@ -61,6 +61,7 @@ public class ItemComponentTypes { public static final ItemComponentType STACKABLE = register("stackable", new ItemComponentType<>(StackableItemComponent.CODEC)); public static final ItemComponentType ATTRIBUTE_MODIFIERS = register("attribute_modifiers", new ItemComponentType<>(AttributeModifiersItemComponent.CODEC)); public static final ItemComponentType OMINOUS_EFFECT_PROVIDER = register("ominous_effect_provider", new ItemComponentType<>(OminousEffectProviderItemComponent.CODEC)); + public static final ItemComponentType GLIDER = register("glider", new ItemComponentType<>(GliderItemComponent.CODEC)); private ItemComponentTypes() {} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java index b9f53cd3..9f548438 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java @@ -2,69 +2,53 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.item.armor.ArmorMaterial; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentSet; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.registry.ItematicRegistryKeys; +import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.minecraft.component.type.AttributeModifierSlot; import net.minecraft.component.type.AttributeModifiersComponent; -import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.attribute.EntityAttributeModifier; +import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.AnimalArmorItem; -import net.minecraft.item.ArmorItem; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryFixedCodec; -import net.minecraft.sound.SoundEvent; +import net.minecraft.item.equipment.ArmorMaterial; +import net.minecraft.item.equipment.EquipmentType; import net.minecraft.util.Identifier; -import net.minecraft.util.StringIdentifiable; +import net.minecraft.util.dynamic.Codecs; import java.util.Optional; -public record ArmorItemComponent(RegistryEntry material, Optional armorType) implements ItemComponent { +public record ArmorItemComponent(int defense, double toughness, double knockbackResistance, Identifier attributeId) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - RegistryFixedCodec.of(ItematicRegistryKeys.ARMOR_MATERIAL).fieldOf("material").forGetter(ArmorItemComponent::material), - StringIdentifiable.createCodec(AnimalArmorItem.Type::values).optionalFieldOf("armor_type").forGetter(ArmorItemComponent::armorType) + Codecs.NON_NEGATIVE_INT.fieldOf("defense").forGetter(ArmorItemComponent::defense), + ItematicCodecs.NON_NEGATIVE_DOUBLE.fieldOf("toughness").forGetter(ArmorItemComponent::toughness), + ItematicCodecs.NON_NEGATIVE_DOUBLE.fieldOf("knockback_resistance").forGetter(ArmorItemComponent::knockbackResistance), + Identifier.CODEC.fieldOf("attribute_id").forGetter(ArmorItemComponent::attributeId) ).apply(instance, ArmorItemComponent::new)); - public static ArmorItemComponent of(RegistryEntry material) { - return new ArmorItemComponent(material, Optional.empty()); + public static ArmorItemComponent of(ArmorMaterial material, EquipmentType type) { + return new ArmorItemComponent( + material.defense().get(type), + material.toughness(), + material.knockbackResistance(), + Identifier.ofVanilla("armor." + type.getName()) + ); } - public static ArmorItemComponent of(RegistryEntry material, AnimalArmorItem.Type armorType) { - return new ArmorItemComponent(material, Optional.of(armorType)); + public static ItemComponent[] from(ArmorMaterial material, EquipmentType type) { + return from(material, type, null); } - public static ItemComponent[] of(ArmorItem.Type type, int damageFactor, RegistryEntry material, RegistryEntry equipSound) { + public static ItemComponent[] from(ArmorMaterial material, EquipmentType type, AnimalArmorItem.Type animalType) { + int durability = type.getMaxDamage(material.durability()); return new ItemComponent[] { StackableItemComponent.of(1), - DamageableItemComponent.of(type.getMaxDamage(damageFactor)), - EquipmentItemComponent.of(type.getEquipmentSlot(), true, equipSound), - of(material) - }; - } - - public static ItemComponent[] of(int durability, EquipmentSlot slot, RegistryEntry material, RegistryEntry equipSound) { - return new ItemComponent[] { - StackableItemComponent.of(1), - DamageableItemComponent.of(durability), - EquipmentItemComponent.of(slot, true, equipSound), - of(material) - }; - } - - public static ItemComponent[] ofAnimal(RegistryEntry material, RegistryEntry equipSound, AnimalArmorItem.Type type) { - return new ItemComponent[] { - StackableItemComponent.of(1), - EquipmentItemComponent.of(EquipmentSlot.BODY, false, equipSound), - of(material, type) - }; - } - - public static ItemComponent[] ofAnimal(RegistryEntry material, RegistryEntry equipSound, AnimalArmorItem.Type type, int damageFactor, RegistryEntry breakSound) { - return new ItemComponent[] { - StackableItemComponent.of(1), - DamageableItemComponent.of(ArmorItem.Type.BODY.getMaxDamage(damageFactor), breakSound), - EquipmentItemComponent.of(EquipmentSlot.BODY, false, equipSound), + Optional.ofNullable(animalType) + .map(AnimalArmorItem.Type::itematic$breakSound) + .map(breakSound -> DamageableItemComponent.of(durability, breakSound)) + .orElseGet(() -> DamageableItemComponent.of(durability)), + EquipmentItemComponent.of(material, type, animalType), of(material, type) }; } @@ -81,20 +65,38 @@ public Codec codec() { @Override public void addAttributeModifiers(AttributeModifiersComponent.Builder builder, ItemComponentSet components) { - if (!this.material.hasKeyAndValue()) { - return; + AttributeModifierSlot slot = components.get(ItemComponentTypes.EQUIPMENT) + .map(EquipmentItemComponent::slot) + .map(AttributeModifierSlot::forEquipmentSlot) + .orElse(AttributeModifierSlot.ARMOR); + builder.add( + EntityAttributes.ARMOR, + new EntityAttributeModifier( + this.attributeId, + this.defense, + EntityAttributeModifier.Operation.ADD_VALUE + ), + slot + ); + builder.add( + EntityAttributes.ARMOR_TOUGHNESS, + new EntityAttributeModifier( + this.attributeId, + this.toughness, + EntityAttributeModifier.Operation.ADD_VALUE + ), + slot + ); + if (this.knockbackResistance > 0.0d) { + builder.add( + EntityAttributes.KNOCKBACK_RESISTANCE, + new EntityAttributeModifier( + this.attributeId, + this.knockbackResistance, + EntityAttributeModifier.Operation.ADD_VALUE + ), + slot + ); } - - components.get(ItemComponentTypes.EQUIPMENT) - .ifPresent(c -> this.material.value().addAttributes(builder, c.slot())); - } - - public Identifier textureId() { - return this.armorType.map(type -> type.itematic$textureId(this.material)) - .orElseGet(() -> this.textureId(false)); - } - - public Identifier textureId(boolean secondLayer) { - return this.material.value().textureId(secondLayer); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java index 68865fd0..a2c3b393 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EnchantableItemComponent.java @@ -10,6 +10,7 @@ import net.minecraft.component.type.EnchantableComponent; import net.minecraft.item.Item; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.equipment.ArmorMaterial; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryFixedCodec; @@ -23,6 +24,10 @@ public record EnchantableItemComponent(int enchantability, Optional equipSound) implements ItemComponent, Equipment { +import java.util.Optional; + +public record EquipmentItemComponent(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound, Optional model, Optional>> allowedEntities) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( EquipmentSlot.CODEC.fieldOf("slot").forGetter(EquipmentItemComponent::slot), Codec.BOOL.optionalFieldOf("swappable", false).forGetter(EquipmentItemComponent::swappable), - SoundEvent.ENTRY_CODEC.fieldOf("equip_sound").forGetter(EquipmentItemComponent::equipSound) + SoundEvent.ENTRY_CODEC.optionalFieldOf("equip_sound", SoundEvents.ITEM_ARMOR_EQUIP_GENERIC).forGetter(EquipmentItemComponent::equipSound), + Identifier.CODEC.optionalFieldOf("model").forGetter(EquipmentItemComponent::model), + RegistryCodecs.entryList(RegistryKeys.ENTITY_TYPE).optionalFieldOf("allowed_entities").forGetter(EquipmentItemComponent::allowedEntities) ).apply(instance, EquipmentItemComponent::new)); + public static EquipmentItemComponent of(ArmorMaterial material, EquipmentType type, @Nullable AnimalArmorItem.Type animalType) { + return new EquipmentItemComponent( + type.getEquipmentSlot(), + true, + material.equipSound(), + Optional.of(material.modelId()), + Optional.ofNullable(animalType).map(AnimalArmorItem.Type::itematic$allowedEntities) + ); + } + public static EquipmentItemComponent of(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound) { - return new EquipmentItemComponent(slot, swappable, equipSound); + return new EquipmentItemComponent( + slot, + swappable, + equipSound, + Optional.empty(), + Optional.empty() + ); + } + + public static EquipmentItemComponent of(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound, Identifier model) { + return new EquipmentItemComponent( + slot, + swappable, + equipSound, + Optional.of(model), + Optional.empty() + ); + } + + public static EquipmentItemComponent of(EquippableComponent equippable) { + return new EquipmentItemComponent( + equippable.slot(), + true, + equippable.equipSound(), + equippable.model(), + equippable.allowedEntities() + ); } - public static ItemComponent[] skull(RegistryEntry attachedBlock, RegistryEntry otherBlock, RegistryEntryLookup soundEvents, RegistryEntryLookup dispenseBehaviors) { + public static EquipmentItemComponent ofStatic(EquipmentSlot slot) { + return new EquipmentItemComponent( + slot, + false, + SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, + Optional.empty(), + Optional.empty() + ); + } + + public static ItemComponent[] skull(RegistryEntry attachedBlock, RegistryEntry otherBlock, RegistryEntryLookup dispenseBehaviors) { return new ItemComponent[] { BlockItemComponent.attachedToSide(attachedBlock, otherBlock, Direction.DOWN), - of(EquipmentSlot.HEAD, false, soundEvents.getOrThrow(SoundEventKeys.ARMOR_EQUIP_GENERIC)), + ofStatic(EquipmentSlot.HEAD), DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY_HEAD)), FireworkShapeModifierItemComponent.of(FireworkExplosionComponent.Type.CREEPER) }; @@ -65,7 +125,16 @@ public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack return ItemResult.PASS; } - ActionResult result = this.equipAndSwap(stack.getItem(), world, user, hand); + EquippableComponent equippable = stack.get(DataComponentTypes.EQUIPPABLE); + if (equippable == null) { + return ItemResult.PASS; + } + + ActionResult result = equippable.equip(stack, user); + if (result == ActionResult.FAIL) { + return ItemResult.PASS; + } + if (result instanceof ActionResult.Success success) { resultStackConsumer.set(success.getNewHandStack()); } @@ -77,24 +146,11 @@ public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack stack.itematic$invokeEvent(ItemEvents.EQUIP_ITEM, context); } - if (result == ActionResult.FAIL) { - return ItemResult.PASS; - } - - if (result.isAccepted() && !world.isClient()) { - user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - } - return result.isAccepted() ? ItemResult.SUCCEED : ItemResult.PASS; } @Override - public EquipmentSlot getSlotType() { - return this.slot; - } - - @Override - public RegistryEntry getEquipSound() { - return this.equipSound; + public void addComponents(ComponentMap.Builder builder) { + builder.add(DataComponentTypes.EQUIPPABLE, new EquippableComponent(this.slot, this.equipSound, this.model, this.allowedEntities, false)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java index 8cad8e49..0d22c337 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/FireworkItemComponent.java @@ -42,7 +42,7 @@ public Codec codec() { @Override public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - if (!user.isFallFlying()) { + if (!user.isGliding()) { return ItemResult.PASS; } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/GliderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/GliderItemComponent.java new file mode 100644 index 00000000..f6fd1cb0 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/item/component/components/GliderItemComponent.java @@ -0,0 +1,45 @@ +package net.errorcraft.itematic.item.component.components; + +import com.mojang.serialization.Codec; +import net.errorcraft.itematic.component.ItematicDataComponentTypes; +import net.errorcraft.itematic.component.type.GliderDataComponent; +import net.errorcraft.itematic.item.component.ItemComponent; +import net.errorcraft.itematic.item.component.ItemComponentType; +import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.component.ComponentMap; +import net.minecraft.item.ItemStack; +import net.minecraft.predicate.item.ItemPredicate; + +import java.util.Optional; + +public record GliderItemComponent(GliderDataComponent glider) implements ItemComponent { + public static final Codec CODEC = GliderDataComponent.CODEC.xmap(GliderItemComponent::new, GliderItemComponent::glider); + + public static GliderItemComponent of(ItemPredicate condition) { + return new GliderItemComponent(new GliderDataComponent(Optional.of(condition))); + } + + @Override + public ItemComponentType type() { + return ItemComponentTypes.GLIDER; + } + + @Override + public Codec codec() { + return CODEC; + } + + @Override + public void addComponents(ComponentMap.Builder builder) { + builder.add(ItematicDataComponentTypes.GLIDER, this.glider); + } + + public boolean canUse(ItemStack stack) { + GliderDataComponent glider = stack.get(ItematicDataComponentTypes.GLIDER); + if (glider == null) { + return false; + } + + return glider.canUse(stack); + } +} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java index 845a83ac..dac57c02 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java @@ -3,7 +3,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.component.ItematicDataComponentTypes; -import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; @@ -16,6 +15,7 @@ import net.minecraft.component.type.BundleContentsComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsage; @@ -26,7 +26,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.stat.Stats; import net.minecraft.util.ClickType; -import net.minecraft.util.Hand; import net.minecraft.world.World; import org.apache.commons.lang3.math.Fraction; @@ -42,6 +41,8 @@ public record ItemHolderItemComponent(Fraction capacity, ItemHolderRules rules, SoundEvent.ENTRY_CODEC.fieldOf("remove_item_sound").forGetter(ItemHolderItemComponent::removeItemSound), SoundEvent.ENTRY_CODEC.fieldOf("empty_sound").forGetter(ItemHolderItemComponent::emptySound) ).apply(instance, ItemHolderItemComponent::new)); + private static final int TICKS_AFTER_FIRST_THROW = BundleItemAccessor.ticksAfterFirstThrow(); + private static final int TICKS_BETWEEN_THROWS = BundleItemAccessor.ticksBetweenThrows(); public static ItemHolderItemComponent of(int capacity, ItemHolderRules rules, RegistryEntry insertItemSound, RegistryEntry removeItemSound, RegistryEntry emptySound) { return new ItemHolderItemComponent(Fraction.getFraction(capacity, 1), rules, insertItemSound, removeItemSound, emptySound); @@ -58,14 +59,14 @@ public Codec codec() { } @Override - public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - if (!BundleItemAccessor.dropAllBundledItems(stack, user)) { - return ItemResult.PASS; + public void using(ItemStack stack, World world, LivingEntity user, int usedTicks, int remainingUseTicks) { + if (world.isClient() || !(user instanceof PlayerEntity player)) { + return; } - user.playSound(this.emptySound.value(), 0.8f, 0.8f + world.getRandom().nextFloat() * 0.4f); - user.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); - return ItemResult.SUCCEED; + if (usedTicks == 0 || (usedTicks >= TICKS_AFTER_FIRST_THROW && usedTicks % TICKS_BETWEEN_THROWS == 0)) { + this.removeAndDrop(stack, player); + } } @Override @@ -199,15 +200,33 @@ private void add(BundleContentsComponent.Builder bundleContentsBuilder, Slot slo } private void remove(Entity user, BundleContentsComponent.Builder bundleContentsBuilder, Consumer onRemoved) { - World world = user.getWorld(); ItemStack removedStack = bundleContentsBuilder.removeFirst(); if (removedStack == null) { return; } - user.playSound(this.removeItemSound.value(), 0.8f, 0.8f + world.getRandom().nextFloat() * 0.4f); + + user.playSound(this.removeItemSound.value(), 0.8f, 0.8f + user.getWorld().getRandom().nextFloat() * 0.4f); onRemoved.accept(removedStack); } + private void removeAndDrop(ItemStack stack, PlayerEntity player) { + BundleContentsComponent.Builder newBuilder = this.createBuilder(stack); + if (newBuilder == null) { + return; + } + + ItemStack removedStack = newBuilder.removeFirst(); + if (removedStack == null) { + return; + } + + player.dropItem(removedStack, true); + player.playSound(this.emptySound.value(), 0.8f, 0.8f + player.getWorld().getRandom().nextFloat() * 0.4f); + player.incrementStat(Stats.USED.itematic$getOrCreateStat(stack.getRegistryEntry())); + + stack.set(DataComponentTypes.BUNDLE_CONTENTS, newBuilder.build()); + } + private void playInsertItemSound(PlayerEntity user) { user.playSound(this.insertItemSound.value(), 0.8f, 0.8f + user.getWorld().getRandom().nextFloat() * 0.4f); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/PotionHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/PotionHolderItemComponent.java index 9258dfae..c9fe7e8e 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/PotionHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/PotionHolderItemComponent.java @@ -11,7 +11,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.potion.Potion; import net.minecraft.text.Text; import net.minecraft.util.dynamic.Codecs; @@ -46,7 +45,10 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List baseTranslationKey + ".effect." + potion.value().getBaseName()) + .orElseGet(() -> baseTranslationKey + ".effect.empty"); } public static PotionHolderItemComponent of(float durationMultiplier) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java index 37d26b7b..ca3f0ebf 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ShooterItemComponent.java @@ -142,7 +142,7 @@ private void damageItem(ItemStack stack, ServerWorld world, Hand hand, LivingEnt } private void createProjectile(ItemStack projectile, ServerWorld world, LivingEntity shooter, float power, float divergence, float angle, int index, boolean critical, @Nullable LivingEntity target) { - Optional optionalEntity = projectile.itematic$getComponent(ItemComponentTypes.PROJECTILE) + Optional optionalEntity = projectile.itematic$getBehavior(ItemComponentTypes.PROJECTILE) .map(projectileComponent -> projectileComponent.createEntity(world, shooter, projectile, 0.0f, power)); if (optionalEntity.isEmpty()) { return; diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java index 5ac402e7..a12e8543 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java @@ -38,7 +38,7 @@ public Codec codec() { } public Optional spawnBaby(PlayerEntity user, MobEntity entity, EntityType entityType, ServerWorld world, Vec3d pos, ItemStack stack) { - Optional entityItemComponent = stack.itematic$getComponent(ItemComponentTypes.ENTITY); + Optional entityItemComponent = stack.itematic$getBehavior(ItemComponentTypes.ENTITY); if (entityItemComponent.isEmpty()) { return Optional.empty(); } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java index ddfa3b08..54cd48de 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ThrowableItemComponent.java @@ -98,7 +98,7 @@ private ItemResult createEntity(World world, LivingEntity user, ItemStack stack, } private void createEntity(ActionContext context) { - context.stack().itematic$getComponent(ItemComponentTypes.PROJECTILE) + context.stack().itematic$getBehavior(ItemComponentTypes.PROJECTILE) .map(c -> c.createEntity(context, ActionContextParameter.TARGET, this.angleOffset, this.speed, 1.0f)) .ifPresent(projectile -> { context.world().spawnEntity(projectile); diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java index 690852a8..2f403d53 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/entries/SuspiciousEffectIngredientItemGroupEntry.java @@ -45,7 +45,7 @@ protected Collection createStacks(ItemGroup.DisplayContext context) { context.lookup().getOrThrow(RegistryKeys.ITEM) .streamEntries() .map(RegistryEntry::value) - .map(item -> item.itematic$getComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT)) + .map(item -> item.itematic$getBehavior(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT)) .flatMap(Optional::stream) .forEach(c -> { ItemStack stack = new ItemStack(this.item); diff --git a/src/main/java/net/errorcraft/itematic/item/holder/rule/rules/OccupancyHeldItemsWithPenaltyItemHolderRule.java b/src/main/java/net/errorcraft/itematic/item/holder/rule/rules/OccupancyHeldItemsWithPenaltyItemHolderRule.java index db51a0cc..ca2265e2 100644 --- a/src/main/java/net/errorcraft/itematic/item/holder/rule/rules/OccupancyHeldItemsWithPenaltyItemHolderRule.java +++ b/src/main/java/net/errorcraft/itematic/item/holder/rule/rules/OccupancyHeldItemsWithPenaltyItemHolderRule.java @@ -30,7 +30,7 @@ public ItemHolderRuleType type() { @Override public Fraction occupancy(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .map(c -> c.occupancy(stack)) .map(this.penalty::add) .orElse(this.penalty); diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/AngleModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/AngleModelOverride.java index 877545a1..8865fd03 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/AngleModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/AngleModelOverride.java @@ -28,7 +28,7 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit if (target == null) { return 0.0f; } - return stack.itematic$getComponent(ItemComponentTypes.POINTABLE) + return stack.itematic$getBehavior(ItemComponentTypes.POINTABLE) .map(PointableItemComponent::pointsTo) .map(RegistryEntry::value) .map(p -> this.getAngle(p.createPos(stack, world, target), target, world)) @@ -37,7 +37,7 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.POINTABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.POINTABLE); } private float getAngle(GlobalPos pos, Entity target, World world) { diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/BrokenModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/BrokenModelOverride.java index bb07b4fb..a12fd7db 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/BrokenModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/BrokenModelOverride.java @@ -10,13 +10,13 @@ public class BrokenModelOverride implements ModelOverride { @Override public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntity target, int seed) { - return stack.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) + return stack.itematic$getBehavior(ItemComponentTypes.DAMAGEABLE) .map(c -> c.isUsable(stack) ? 0.0f : 1.0f) .orElse(0.0f); } @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.DAMAGEABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.DAMAGEABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/ChargedModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/ChargedModelOverride.java index 88d2be5f..3768f5de 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/ChargedModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/ChargedModelOverride.java @@ -20,6 +20,6 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.SHOOTER); + return stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamageModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamageModelOverride.java index 82fe442c..4b46be6d 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamageModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamageModelOverride.java @@ -15,6 +15,6 @@ public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable Li @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.DAMAGEABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.DAMAGEABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamagedModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamagedModelOverride.java index a011f7b2..38637b71 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamagedModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/DamagedModelOverride.java @@ -15,6 +15,6 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.DAMAGEABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.DAMAGEABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FilledModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FilledModelOverride.java index f0f02069..952183ad 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FilledModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FilledModelOverride.java @@ -11,7 +11,7 @@ public class FilledModelOverride implements ClampedModelOverride { @Override public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable LivingEntity target, int seed) { - return stack.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .map(c -> c.occupancy(stack)) .map(Fraction::floatValue) .orElse(0.0f); @@ -19,6 +19,6 @@ public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable Li @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.ITEM_HOLDER); + return stack.itematic$hasBehavior(ItemComponentTypes.ITEM_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FireworkModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FireworkModelOverride.java index 55930142..57eb3697 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FireworkModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/FireworkModelOverride.java @@ -21,6 +21,6 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.SHOOTER); + return stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullModelOverride.java index 6981871e..eb8f1b33 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullModelOverride.java @@ -18,13 +18,13 @@ public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable Li return 0.0f; } - return stack.itematic$getComponent(ItemComponentTypes.SHOOTER) + return stack.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(shooter -> shooter.method().pullProgress(stack, target, target.itematic$itemUsedTicks())) .orElse(0.0f); } @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.SHOOTER); + return stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullingModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullingModelOverride.java index a26f5369..99a989ab 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullingModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/PullingModelOverride.java @@ -32,6 +32,6 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.SHOOTER); + return stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TootingModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TootingModelOverride.java index 5acc76f4..833a665d 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TootingModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TootingModelOverride.java @@ -24,6 +24,6 @@ public float apply(ItemStack stack, @Nullable World world, @Nullable LivingEntit @Override public boolean isApplicable(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.PLAYABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.PLAYABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TrimTypeModelOverride.java b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TrimTypeModelOverride.java index 7f6c24b7..8cd07d14 100644 --- a/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TrimTypeModelOverride.java +++ b/src/main/java/net/errorcraft/itematic/item/model/override/overrides/TrimTypeModelOverride.java @@ -4,7 +4,7 @@ import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.trim.ArmorTrim; +import net.minecraft.item.equipment.trim.ArmorTrim; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -15,7 +15,8 @@ public float applyUnclamped(ItemStack stack, @Nullable World world, @Nullable Li if (trim == null) { return 0.0f; } - return trim.getMaterial().value().itemModelIndex(); + + return trim.material().value().itemModelIndex(); } @Override diff --git a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java index e53d56b7..68361cd5 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java @@ -84,7 +84,7 @@ public ItemResult place() { } private boolean tryModifySpawnerBlock() { - if (!this.stack.itematic$hasComponent(ItemComponentTypes.SPAWN_EGG)) { + if (!this.stack.itematic$hasBehavior(ItemComponentTypes.SPAWN_EGG)) { return false; } if (!this.blockState.isOf(Blocks.SPAWNER)) { diff --git a/src/main/java/net/errorcraft/itematic/item/smithing/template/SmithingTemplates.java b/src/main/java/net/errorcraft/itematic/item/smithing/template/SmithingTemplates.java index 7472ba31..f73dac69 100644 --- a/src/main/java/net/errorcraft/itematic/item/smithing/template/SmithingTemplates.java +++ b/src/main/java/net/errorcraft/itematic/item/smithing/template/SmithingTemplates.java @@ -5,8 +5,8 @@ import net.errorcraft.itematic.item.smithing.template.templates.TrimPatternSmithingTemplate; import net.errorcraft.itematic.registry.ItematicRegistryKeys; import net.minecraft.item.Item; -import net.minecraft.item.trim.ArmorTrimPattern; -import net.minecraft.item.trim.ArmorTrimPatterns; +import net.minecraft.item.equipment.trim.ArmorTrimPattern; +import net.minecraft.item.equipment.trim.ArmorTrimPatterns; import net.minecraft.registry.Registerable; import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKey; diff --git a/src/main/java/net/errorcraft/itematic/item/smithing/template/templates/TrimPatternSmithingTemplate.java b/src/main/java/net/errorcraft/itematic/item/smithing/template/templates/TrimPatternSmithingTemplate.java index e3367a4c..80e1fad0 100644 --- a/src/main/java/net/errorcraft/itematic/item/smithing/template/templates/TrimPatternSmithingTemplate.java +++ b/src/main/java/net/errorcraft/itematic/item/smithing/template/templates/TrimPatternSmithingTemplate.java @@ -6,7 +6,7 @@ import net.errorcraft.itematic.item.smithing.template.SmithingTemplateType; import net.errorcraft.itematic.item.smithing.template.SmithingTemplateTypes; import net.errorcraft.itematic.mixin.item.SmithingTemplateItemAccessor; -import net.minecraft.item.trim.ArmorTrimPattern; +import net.minecraft.item.equipment.trim.ArmorTrimPattern; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java index dfce0d49..c630e7f2 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/PlayableIntegerProvider.java @@ -29,7 +29,7 @@ public IntegerProviderType type() { @Override public OptionalInt get(ItemStack stack, LivingEntity user) { - return stack.itematic$getComponent(ItemComponentTypes.PLAYABLE) + return stack.itematic$getBehavior(ItemComponentTypes.PLAYABLE) .flatMap(component -> component.instrument(stack, user.getRegistryManager())) .map(RegistryEntry::value) .map(instrument -> OptionalInt.of(MathHelper.floor(instrument.useDuration() * SharedConstants.TICKS_PER_SECOND))) diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/ShooterIntegerProvider.java b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/ShooterIntegerProvider.java index f222b9ec..4e7a3c94 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/ShooterIntegerProvider.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/ShooterIntegerProvider.java @@ -30,7 +30,7 @@ public OptionalInt get(ItemStack stack, LivingEntity user) { return OptionalInt.empty(); } - return stack.itematic$getComponent(ItemComponentTypes.SHOOTER) + return stack.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(shooter -> shooter.useDuration(stack, user)) .orElseGet(OptionalInt::empty); } diff --git a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/TridentIntegerProvider.java b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/TridentIntegerProvider.java index 36925997..8fd5afc4 100644 --- a/src/main/java/net/errorcraft/itematic/item/use/provider/providers/TridentIntegerProvider.java +++ b/src/main/java/net/errorcraft/itematic/item/use/provider/providers/TridentIntegerProvider.java @@ -40,7 +40,7 @@ private static boolean mayStartUsing(ItemStack stack, LivingEntity user) { return false; } - return stack.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) + return stack.itematic$getBehavior(ItemComponentTypes.DAMAGEABLE) .map(c -> c.isUsable(stack)) .orElse(true); } diff --git a/src/main/java/net/errorcraft/itematic/loot/function/DyeItemModifier.java b/src/main/java/net/errorcraft/itematic/loot/function/DyeItemModifier.java index deb76fed..d7049c5e 100644 --- a/src/main/java/net/errorcraft/itematic/loot/function/DyeItemModifier.java +++ b/src/main/java/net/errorcraft/itematic/loot/function/DyeItemModifier.java @@ -35,7 +35,7 @@ public List chances() { @Override protected ItemStack process(ItemStack stack, LootContext context) { - if (!stack.itematic$hasComponent(ItemComponentTypes.DYEABLE)) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.DYEABLE)) { return stack; } List dyes = new ArrayList<>(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/ChiseledBookshelfBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/ChiseledBookshelfBlockExtender.java index 01006412..2e71828a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/ChiseledBookshelfBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/ChiseledBookshelfBlockExtender.java @@ -25,7 +25,7 @@ public class ChiseledBookshelfBlockExtender { ) ) private static boolean isOfForEnchantedBookUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.ENCHANTMENT_HOLDER) + return instance.itematic$getBehavior(ItemComponentTypes.ENCHANTMENT_HOLDER) .map(EnchantmentHolderItemComponent::grindingTransformsInto) .isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/ComposterBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/ComposterBlockExtender.java index 0faad92c..ec912515 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/ComposterBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/ComposterBlockExtender.java @@ -26,7 +26,7 @@ public class ComposterBlockExtender { ) ) private boolean containsKeyUseItemComponentCheck(Object2FloatMap instance, Object o, ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.COMPOSTABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.COMPOSTABLE); } @Redirect( @@ -38,7 +38,7 @@ private boolean containsKeyUseItemComponentCheck(Object2FloatMap instance, Object o, @Local(argsOnly = true) ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.COMPOSTABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.COMPOSTABLE); } @Redirect( @@ -50,7 +50,7 @@ private static boolean containsKeyUseItemComponentCheckStatic(Object2FloatMap instance, Object o, @Local(argsOnly = true) ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.COMPOSTABLE) + return stack.itematic$getBehavior(ItemComponentTypes.COMPOSTABLE) .map(CompostableItemComponent::levelIncreaseChance) .orElse(0.0f); } @@ -88,7 +88,7 @@ public static class ComposterInventoryExtender { ) ) private boolean containsKeyUseItemComponentCheck(Object2FloatMap instance, Object o, int slot, ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.COMPOSTABLE); + return stack.itematic$hasBehavior(ItemComponentTypes.COMPOSTABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/DispenserBlockExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/DispenserBlockExtender.java index 8c61f403..ee5a86f1 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/DispenserBlockExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/DispenserBlockExtender.java @@ -27,7 +27,7 @@ public DispenserBehavior getBehaviorForItem(World world, ItemStack stack) { @Unique private static Optional behavior(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.DISPENSABLE) + return stack.itematic$getBehavior(ItemComponentTypes.DISPENSABLE) .map(DispensableItemComponent::behavior) .map(RegistryEntry::value); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java index 3b169de8..6fcc70c2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/cauldron/CauldronBehaviorExtender.java @@ -36,7 +36,7 @@ public interface CauldronBehaviorExtender { ) ) private static Block getBlockFromItemUseItemComponent(Item item) { - return item.itematic$getComponent(ItemComponentTypes.BLOCK) + return item.itematic$getBehavior(ItemComponentTypes.BLOCK) .map(BlockItemComponent::block) .map(BlockPicker::defaultBlock) .map(RegistryEntry::value) @@ -62,7 +62,7 @@ private static ItemStack copyComponentsToNewStackForShulkerBoxUseRegistryEntry(I ) ) private static boolean isInForDyeableItemUseItemComponentCheck(ItemStack instance, TagKey tag, @Share("dyeableItemComponent") LocalRef dyeableItemComponent) { - return instance.itematic$hasComponent(ItemComponentTypes.DYEABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.DYEABLE); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java index ca20ee44..7da94014 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/AbstractFurnaceBlockEntityExtender.java @@ -28,7 +28,7 @@ public class AbstractFurnaceBlockEntityExtender { ) ) private int getFuelTicksUseDataComponent(FuelRegistry instance, ItemStack item) { - return item.itematic$getComponent(ItemComponentTypes.FUEL) + return item.itematic$getBehavior(ItemComponentTypes.FUEL) .map(FuelItemComponent::ticks) .orElse(0); } @@ -112,20 +112,23 @@ private boolean isOfForBucketUseRegistryKeyCheck(ItemStack instance, Item item) return instance.itematic$isOf(ItemKeys.BUCKET); } + @Redirect( + method = "isValid", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/FuelRegistry;isFuel(Lnet/minecraft/item/ItemStack;)Z" + ) + ) + private boolean isFuelUseItemComponentCheck(FuelRegistry instance, ItemStack item) { + return item.itematic$hasBehavior(ItemComponentTypes.FUEL); + } + @Redirect( method = "isValid", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;BUCKET:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ), - allow = 2 + ) ) private boolean isValidIsOfForBucketUseRegistryKeyCheck(ItemStack instance, Item item) { return instance.itematic$isOf(ItemKeys.BUCKET); @@ -140,7 +143,7 @@ private boolean isValidIsOfForBucketUseRegistryKeyCheck(ItemStack instance, Item ) @SuppressWarnings("unchecked") private static E setRemainderItemStackUseItemComponent(E element, @Local(ordinal = 0) Item item) { - return (E) item.itematic$getComponent(ItemComponentTypes.FUEL) + return (E) item.itematic$getBehavior(ItemComponentTypes.FUEL) .flatMap(FuelItemComponent::remainder) .orElse(ItemStack.EMPTY); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java index f8eeeee0..ff551647 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java @@ -50,7 +50,7 @@ private boolean isOfForBlazePowderUseRegistryKeyCheck(ItemStack instance, Item i ) ) private boolean isOfForPotionUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.POTION_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.POTION_HOLDER); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java index c3fd29bc..648ce237 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java @@ -21,7 +21,7 @@ public class LecternBlockEntityExtender { ) ) private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.WRITABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); } @Redirect( @@ -40,6 +40,6 @@ private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Ite ) ) private boolean isOfForWrittenBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.TEXT_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/DataComponentTypesExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/DataComponentTypesExtender.java index 7d106a98..6bfff612 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/component/DataComponentTypesExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/component/DataComponentTypesExtender.java @@ -1,5 +1,6 @@ package net.errorcraft.itematic.mixin.component; +import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.minecraft.component.ComponentMap; import net.minecraft.component.ComponentType; import net.minecraft.component.DataComponentTypes; @@ -9,8 +10,29 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; +import java.util.function.UnaryOperator; + @Mixin(DataComponentTypes.class) public class DataComponentTypesExtender { + @Redirect( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/component/DataComponentTypes;register(Ljava/lang/String;Ljava/util/function/UnaryOperator;)Lnet/minecraft/component/ComponentType;", + ordinal = 0 + ), + slice = @Slice( + from = @At( + value = "CONSTANT", + args = "stringValue=glider" + ) + ) + ) + @SuppressWarnings("unchecked") + private static ComponentType useCustomGliderDataComponent(String id, UnaryOperator> builderOperator) { + return (ComponentType) ItematicDataComponentTypes.GLIDER; + } + @Redirect( method = "", at = @At( @@ -45,7 +67,7 @@ private static ComponentMap.Builder doNotAddMaxStackSizeDataComponent(Compon ) ) ) - private static ComponentMap.Builder doNotAddRaritySizeDataComponent(ComponentMap.Builder instance, ComponentType type, T value) { + private static ComponentMap.Builder doNotAddRarityDataComponent(ComponentMap.Builder instance, ComponentType type, T value) { return instance; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/DyedColorComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/DyedColorComponentExtender.java index 0428d147..8a67e762 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/component/type/DyedColorComponentExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/DyedColorComponentExtender.java @@ -19,6 +19,6 @@ public class DyedColorComponentExtender { ) ) private static boolean isInForDyeableUseItemComponentCheck(ItemStack instance, TagKey tag) { - return instance.itematic$hasComponent(ItemComponentTypes.DYEABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.DYEABLE); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java new file mode 100644 index 00000000..048c8fec --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java @@ -0,0 +1,24 @@ +package net.errorcraft.itematic.mixin.component.type; + +import net.minecraft.component.type.EquippableComponent; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stat.Stat; +import net.minecraft.stat.StatType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(EquippableComponent.class) +public class EquippableComponentExtender { + @Redirect( + method = "equip", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/stat/StatType;getOrCreateStat(Ljava/lang/Object;)Lnet/minecraft/stat/Stat;" + ) + ) + private Stat getOrCreateStatUseRegistryEntry(StatType instance, T key, ItemStack stack) { + return instance.itematic$getOrCreateStat(stack.getRegistryEntry()); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/enchantment/EnchantmentHelperExtender.java b/src/main/java/net/errorcraft/itematic/mixin/enchantment/EnchantmentHelperExtender.java index d1278ff2..b6a7db4f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/enchantment/EnchantmentHelperExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/enchantment/EnchantmentHelperExtender.java @@ -26,7 +26,7 @@ public class EnchantmentHelperExtender { ) ) private static boolean isOfUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.ENCHANTMENT_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.ENCHANTMENT_HOLDER); } @Redirect( @@ -37,7 +37,7 @@ private static boolean isOfUseItemComponentCheck(ItemStack instance, Item item) ) ) private static boolean isOfForBookUseItemComponent(ItemStack instance, Item item, @Share("transformsInto") LocalRef> transformsInto) { - Optional> optionalItem = instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + Optional> optionalItem = instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto); optionalItem.ifPresent(transformsInto::set); return optionalItem.isPresent(); @@ -62,7 +62,7 @@ private static ItemStack newItemStackForEnchantedBookUseItemComponent(ItemConver ) ) private static boolean isOfUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + return instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto) .isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/CrossbowUserExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/CrossbowUserExtender.java index 5e44c114..f9a4bae8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/CrossbowUserExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/CrossbowUserExtender.java @@ -41,7 +41,7 @@ private Hand getHandPossiblyHoldingForCrossbowUseRegistryKey(LivingEntity entity ) ) private boolean instanceOfCrossbowItemUseItemComponent(Object reference, Class clazz, @Local ItemStack heldStack, @Share("shooterItemComponent") LocalRef shooterItemComponent) { - Optional optionalComponent = heldStack.itematic$getComponent(ItemComponentTypes.SHOOTER); + Optional optionalComponent = heldStack.itematic$getBehavior(ItemComponentTypes.SHOOTER); optionalComponent.ifPresent(shooterItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java index 516e331f..b0d837ce 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java @@ -13,8 +13,11 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.ConsumableItemComponent; import net.errorcraft.itematic.item.component.components.LifeSavingItemComponent; +import net.minecraft.component.ComponentType; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.attribute.EntityAttribute; @@ -22,7 +25,6 @@ import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.item.Equipment; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; @@ -32,6 +34,7 @@ import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; import net.minecraft.util.Hand; +import net.minecraft.util.Unit; import net.minecraft.world.World; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; @@ -59,9 +62,6 @@ public abstract class LivingEntityExtender extends Entity implements LivingEntit @Shadow public abstract boolean isHolding(Predicate predicate); - @Shadow - public abstract Hand getActiveHand(); - @Shadow public abstract void setCurrentHand(Hand hand); @@ -80,9 +80,6 @@ public abstract class LivingEntityExtender extends Entity implements LivingEntit @Shadow public abstract double getAttributeBaseValue(RegistryEntry attribute); - @Shadow - public abstract void spawnItemParticles(ItemStack stack, int count); - @Unique private int itemUsedTicks; @@ -90,26 +87,29 @@ public LivingEntityExtender(EntityType type, World world) { super(type, world); } - @Redirect( + @Inject( method = "getPreferredEquipmentSlot", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/Equipment;fromStack(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/Equipment;" - ) + at = @At("HEAD"), + cancellable = true ) - private static Equipment equipmentFromStackUseItemComponentStatic(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.EQUIPMENT).orElse(null); + private void checkPresenceEquipmentBehaviorEquipmentSlot(ItemStack stack, CallbackInfoReturnable info) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.setReturnValue(EquipmentSlot.MAINHAND); + } } - @Redirect( + @Inject( method = "onEquipStack", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/Equipment;fromStack(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/Equipment;" - ) + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" + ), + cancellable = true ) - private Equipment equipmentFromStackUseItemComponent(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.EQUIPMENT).orElse(null); + private void checkPresenceEquipmentBehavior(EquipmentSlot slot, ItemStack oldStack, ItemStack newStack, CallbackInfo info) { + if (!newStack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.cancel(); + } } @Inject( @@ -118,7 +118,7 @@ private Equipment equipmentFromStackUseItemComponent(ItemStack stack) { cancellable = true ) private void getAmmunitionUseItemComponent(ItemStack stack, CallbackInfoReturnable info) { - if (stack.itematic$hasComponent(ItemComponentTypes.SHOOTER)) { + if (stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER)) { info.setReturnValue(this.itematic$getAmmunition(stack)); } } @@ -211,7 +211,7 @@ private boolean isOfForPiglinHeadUseRegistryKeyCheck(ItemStack instance, Item it ) ) private boolean isOfForTotemOfUndyingUseItemComponent(ItemStack instance, Item item, @Share("lifeSavingItemComponent") LocalRef lifeSavingItemComponent) { - Optional optionalComponent = instance.itematic$getComponent(ItemComponentTypes.LIFE_SAVING); + Optional optionalComponent = instance.itematic$getBehavior(ItemComponentTypes.LIFE_SAVING); optionalComponent.ifPresent(lifeSavingItemComponent::set); return optionalComponent.isPresent(); } @@ -328,20 +328,58 @@ private int keepAtConstantWhenUseDurationIsIndefinite(int original) { cancellable = true ) private void shouldSpawnParticles(ItemStack stack, int count, CallbackInfo info) { - if (!this.activeItemStack.itematic$getComponent(ItemComponentTypes.CONSUMABLE).map(ConsumableItemComponent::hasConsumeParticles).orElse(false)) { + if (!this.activeItemStack.itematic$getBehavior(ItemComponentTypes.CONSUMABLE).map(ConsumableItemComponent::hasConsumeParticles).orElse(false)) { info.cancel(); } } @Redirect( - method = "isFallFlyingAllowed", + method = "canGlideWith", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" + ) + ) + private static boolean containsGliderUseItemComponent(ItemStack instance, ComponentType type) { + return instance.itematic$getBehavior(ItemComponentTypes.GLIDER) + .map(glider -> glider.canUse(instance)) + .orElse(false); + } + + @Redirect( + method = "canGlideWith", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;willBreakNextUse()Z" + ) + ) + private static boolean doNotCheckBreakOnUse(ItemStack instance) { + return false; + } + + @Inject( + method = "canEquipFromDispenser", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" + ), + cancellable = true + ) + private void checkPresenceEquipmentBehaviorBoolean(ItemStack stack, CallbackInfoReturnable info) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + info.setReturnValue(false); + } + } + + @Redirect( + method = "canEquipFromDispenser", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/component/type/EquippableComponent;dispensable()Z" ) ) - private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.ELYTRA); + private boolean dispensableAlwaysTrue(EquippableComponent instance) { + return true; } @Redirect( @@ -416,7 +454,7 @@ public boolean disablesShield() { @Unique private Double getBaseAttackDamage(ItemStack stack) { - if (!stack.itematic$hasComponent(ItemComponentTypes.WEAPON)) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.WEAPON)) { return null; } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java index c2bef752..1d8822c6 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java @@ -23,7 +23,7 @@ public class LookTargetUtilExtender { ) ) private static boolean instanceOfRangedWeaponItemUseItemComponentCheck(Object reference, Class clazz, MobEntity mob, @Share("shooterItemComponent") LocalRef shooterItemComponent) { - Optional optionalComponent = mob.getMainHandStack().itematic$getComponent(ItemComponentTypes.SHOOTER); + Optional optionalComponent = mob.getMainHandStack().itematic$getBehavior(ItemComponentTypes.SHOOTER); optionalComponent.ifPresent(shooterItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/MeleeAttackTaskExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/MeleeAttackTaskExtender.java index 3af6eddb..9000a748 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/MeleeAttackTaskExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/MeleeAttackTaskExtender.java @@ -25,7 +25,7 @@ public class MeleeAttackTaskExtender { ) ) private static boolean instanceOfRangedWeaponItemUseItemComponentCheck(Object reference, Class clazz, MobEntity mob, @Local(argsOnly = true) ItemStack stack, @Share("shooterItemComponent") LocalRef shooterItemComponent) { - Optional optionalComponent = stack.itematic$getComponent(ItemComponentTypes.SHOOTER); + Optional optionalComponent = stack.itematic$getBehavior(ItemComponentTypes.SHOOTER); optionalComponent.ifPresent(shooterItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java index 80faa4f3..fa91fdfd 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java @@ -27,7 +27,7 @@ protected ItemFrameEntityExtender(EntityType ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/HostileEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/HostileEntityExtender.java index 71dde512..30c4e494 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/HostileEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/HostileEntityExtender.java @@ -38,7 +38,7 @@ protected HostileEntityExtender(EntityType entityType ) ) private boolean instanceOfRangedWeaponItemUseItemComponent(Object reference, Class clazz, @Local(argsOnly = true) ItemStack itemStack, @Share("heldAmmunitionDataComponent") LocalRef heldAmmunitionDataComponentReference) { - if (!itemStack.itematic$hasComponent(ItemComponentTypes.SHOOTER)) { + if (!itemStack.itematic$hasBehavior(ItemComponentTypes.SHOOTER)) { return false; } ItemListDataComponent heldAmmunitionDataComponent = itemStack.get(ItematicDataComponentTypes.SHOOTER_HELD_AMMUNITION); diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java index 8e474cf8..e62a5bb4 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/MobEntityExtender.java @@ -88,7 +88,7 @@ protected MobEntityExtender(EntityType entityType, World ) ) private boolean instanceOfSpawnEggItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack, @Share("spawnEggItemComponent") LocalRef spawnEggItemComponent) { - Optional optionalSpawnEggItemComponent = itemStack.itematic$getComponent(ItemComponentTypes.SPAWN_EGG); + Optional optionalSpawnEggItemComponent = itemStack.itematic$getBehavior(ItemComponentTypes.SPAWN_EGG); optionalSpawnEggItemComponent.ifPresent(spawnEggItemComponent::set); return optionalSpawnEggItemComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AbstractHorseEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AbstractHorseEntityExtender.java index fe71da38..7baee081 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AbstractHorseEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AbstractHorseEntityExtender.java @@ -2,7 +2,6 @@ import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.entity.EntityType; -import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.passive.AbstractHorseEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.item.Item; @@ -10,16 +9,12 @@ import net.minecraft.world.World; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; @Mixin(AbstractHorseEntity.class) public abstract class AbstractHorseEntityExtender extends AnimalEntity { - @Shadow - public abstract boolean isTame(); - protected AbstractHorseEntityExtender(EntityType entityType, World world) { super(entityType, world); } @@ -161,11 +156,6 @@ private boolean isOfForSaddleUseRegistryKeyCheck(ItemStack instance, Item item) return instance.itematic$isOf(ItemKeys.SADDLE); } - @Override - public boolean canEquip(ItemStack stack) { - return this.isTame() && this.canUseSlot(EquipmentSlot.BODY) && this.isHorseArmor(stack) && !this.isWearingBodyArmor(); - } - @Mixin(targets = "net/minecraft/entity/passive/AbstractHorseEntity$2") public static class SaddleStackReferenceExtender { @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/HorseEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/HorseEntityExtender.java index d01f9971..70995295 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/HorseEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/HorseEntityExtender.java @@ -1,20 +1,15 @@ package net.errorcraft.itematic.mixin.entity.passive; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.ArmorItemComponent; import net.errorcraft.itematic.mixin.entity.mob.MobEntityExtender; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.passive.HorseEntity; -import net.minecraft.item.AnimalArmorItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; @Mixin(HorseEntity.class) public abstract class HorseEntityExtender extends MobEntityExtender { @@ -22,18 +17,6 @@ protected HorseEntityExtender(EntityType entityType, Wor super(entityType, world); } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public boolean isHorseArmor(ItemStack item) { - return item.itematic$getComponent(ItemComponentTypes.ARMOR) - .flatMap(ArmorItemComponent::armorType) - .map(type -> type == AnimalArmorItem.Type.EQUESTRIAN) - .orElse(false); - } - @Override protected @Nullable RegistryKey pickBlockKey() { return ItemKeys.HORSE_SPAWN_EGG; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MooshroomEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MooshroomEntityExtender.java index 546b5597..b8393a64 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MooshroomEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MooshroomEntityExtender.java @@ -96,7 +96,7 @@ private boolean isOfForShearsUseRegistryKeyCheck(ItemStack instance, Item item) ) ) private boolean isInForSmallFlowersUseItemComponentCheck(ItemStack instance, TagKey tag) { - return instance.itematic$hasComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT); + return instance.itematic$hasBehavior(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT); } @Redirect( @@ -107,7 +107,7 @@ private boolean isInForSmallFlowersUseItemComponentCheck(ItemStack instance, Tag ) ) private SuspiciousStewIngredient suspiciousStewEffectsUseItemComponent(ItemConvertible item, @Local(argsOnly = true) ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT) + return stack.itematic$getBehavior(ItemComponentTypes.SUSPICIOUS_EFFECT_INGREDIENT) .orElse(null); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java index fb9820cd..ab693fa0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java @@ -56,7 +56,7 @@ private static boolean isInForPigFoodItemsUsePigTemptItemsItemTagCheck(ItemStack } @Redirect( - method = "onStruckByLightning", + method = "method_63649", at = @At( value = "NEW", target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java index 992eb5c0..68cbd003 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/SheepEntityExtender.java @@ -73,7 +73,7 @@ private CraftingRecipeInput createChildColorRecipeInput(DyeColor firstColor, Dye ) ) private Optional instanceOfDyeItemUseItemComponent(Optional instance, Predicate predicate) { - return instance.flatMap(item -> item.itematic$getComponent(ItemComponentTypes.DYE)); + return instance.flatMap(item -> item.itematic$getBehavior(ItemComponentTypes.DYE)); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java index 719afbca..2ef6375d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java @@ -53,17 +53,6 @@ private boolean isOfForTurtleHelmetUseRegistryKeyCheck(ItemStack instance, Item return instance.itematic$isOf(ItemKeys.TURTLE_HELMET); } - @Redirect( - method = "checkFallFlying", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForElytraUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.ELYTRA); - } - @Redirect( method = "damageShield", at = @At( @@ -133,7 +122,7 @@ private double multiplyByAttackSpeedMultiplier(double original) { ) ) private boolean isOfUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.ZOOM); + return instance.itematic$hasBehavior(ItemComponentTypes.ZOOM); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java index 9ca1b80d..d55438f6 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java @@ -59,7 +59,7 @@ private boolean isNetworkSyncedUseItemStackVersion(Item instance, @Local ItemSta ) @Nullable private Packet createSyncPacketUseItemComponent(NetworkSyncedItem instance, ItemStack stack, World world, PlayerEntity player) { - return stack.itematic$getComponent(ItemComponentTypes.MAP_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.MAP_HOLDER) .map(c -> c.createSyncPacket(stack, world, player)) .orElse(null); } @@ -72,7 +72,7 @@ private Packet createSyncPacketUseItemComponent(NetworkSyncedItem instance, I ) ) private boolean isOfForWrittenBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.TEXT_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); } @Inject( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/projectile/ProjectileUtilExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/projectile/ProjectileUtilExtender.java index 98c1a3d6..9608fdec 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/projectile/ProjectileUtilExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/projectile/ProjectileUtilExtender.java @@ -23,7 +23,7 @@ public class ProjectileUtilExtender { ) ) private static PersistentProjectileEntity createProjectileUseItemComponent(ArrowItem instance, World world, ItemStack projectile, LivingEntity shooter, ItemStack shotFrom) { - Entity entity = projectile.itematic$getComponent(ItemComponentTypes.PROJECTILE) + Entity entity = projectile.itematic$getBehavior(ItemComponentTypes.PROJECTILE) .map(c -> c.createEntity(world, shooter, projectile, 1.0f, 1.0f)) .orElse(null); if (entity instanceof PersistentProjectileEntity persistentProjectileEntity) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/AnimalArmorItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/AnimalArmorItemExtender.java index 87151d97..9fe6b8a8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/AnimalArmorItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/AnimalArmorItemExtender.java @@ -1,60 +1,35 @@ package net.errorcraft.itematic.mixin.item; import net.errorcraft.itematic.access.item.AnimalArmorItemTypeAccess; -import net.errorcraft.itematic.item.armor.ArmorMaterial; +import net.minecraft.entity.EntityType; import net.minecraft.item.AnimalArmorItem; +import net.minecraft.registry.Registries; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.sound.SoundEvent; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Locale; -import java.util.function.Function; public class AnimalArmorItemExtender { @Mixin(AnimalArmorItem.Type.class) public static class TypeExtender implements AnimalArmorItemTypeAccess { @Shadow @Final - public static AnimalArmorItem.Type EQUESTRIAN; + SoundEvent breakSound; @Shadow @Final - public static AnimalArmorItem.Type CANINE; - - @Unique - private String name; - - @Unique - private Function, Identifier> materialToTextureIdMapper; - - static { - ((TypeExtender)(Object) EQUESTRIAN).materialToTextureIdMapper = entry -> entry.value().assetId().withPath(path -> "entity/horse/armor/horse_armor_" + path); - ((TypeExtender)(Object) CANINE).materialToTextureIdMapper = entry -> entry.value().assetId().withPath("entity/wolf/wolf_armor"); - } - - @Inject( - method = "", - at = @At("TAIL") - ) - private void setName(String name, int ordinal, Function textureIdFunction, SoundEvent breakSound, CallbackInfo info) { - this.name = name.toLowerCase(Locale.ROOT); - } + RegistryEntryList> allowedEntities; @Override - public String asString() { - return this.name; + public RegistryEntry itematic$breakSound() { + return Registries.SOUND_EVENT.getEntry(this.breakSound); } @Override - public Identifier itematic$textureId(RegistryEntry armorMaterial) { - return this.materialToTextureIdMapper.apply(armorMaterial); + public RegistryEntryList> itematic$allowedEntities() { + return this.allowedEntities; } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java deleted file mode 100644 index 7abdeeda..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ArmorMaterialsAccessor.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.minecraft.item.ArmorMaterials; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ArmorMaterials.class) -public interface ArmorMaterialsAccessor { - @Accessor("LEATHER_ENCHANTABILITY") - static int leatherEnchantability() { - throw new AssertionError(); - } - - @Accessor("CHAIN_ENCHANTABILITY") - static int chainEnchantability() { - throw new AssertionError(); - } - - @Accessor("IRON_ENCHANTABILITY") - static int ironEnchantability() { - throw new AssertionError(); - } - - @Accessor("GOLD_ENCHANTABILITY") - static int goldEnchantability() { - throw new AssertionError(); - } - - @Accessor("DIAMOND_ENCHANTABILITY") - static int diamondEnchantability() { - throw new AssertionError(); - } - - @Accessor("TURTLE_ENCHANTABILITY") - static int turtleEnchantability() { - throw new AssertionError(); - } - - @Accessor("NETHERITE_ENCHANTABILITY") - static int netheriteEnchantability() { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java index 412fc34b..63f7da5b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java @@ -1,11 +1,8 @@ package net.errorcraft.itematic.mixin.item; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BundleItem; -import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(BundleItem.class) public interface BundleItemAccessor { @@ -14,8 +11,18 @@ static int itemBarColor() { throw new AssertionError(); } - @Invoker("dropAllBundledItems") - static boolean dropAllBundledItems(ItemStack stack, PlayerEntity player) { + @Accessor("field_54109") + static int ticksAfterFirstThrow() { + throw new AssertionError(); + } + + @Accessor("field_54110") + static int ticksBetweenThrows() { + throw new AssertionError(); + } + + @Accessor("field_54111") + static int useDuration() { throw new AssertionError(); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/CrossbowItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/CrossbowItemExtender.java index ce42882c..54a25509 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/CrossbowItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/CrossbowItemExtender.java @@ -19,7 +19,7 @@ public class CrossbowItemExtender { cancellable = true ) private static void getAmmunitionUseItemComponent(LivingEntity shooter, ItemStack crossbow, CallbackInfoReturnable info) { - if (!crossbow.itematic$hasComponent(ItemComponentTypes.SHOOTER)) { + if (!crossbow.itematic$hasBehavior(ItemComponentTypes.SHOOTER)) { info.setReturnValue(false); } } @@ -32,7 +32,7 @@ private static void getAmmunitionUseItemComponent(LivingEntity shooter, ItemStac ) ) private static ItemStack getAmmunitionUseItemComponent(LivingEntity instance, ItemStack stack) { - if (stack.itematic$hasComponent(ItemComponentTypes.SHOOTER)) { + if (stack.itematic$hasBehavior(ItemComponentTypes.SHOOTER)) { instance.itematic$getAmmunition(stack); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/DebugStickItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/DebugStickItemExtender.java index a7b602ca..acdbb6ec 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/DebugStickItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/DebugStickItemExtender.java @@ -1,22 +1,28 @@ package net.errorcraft.itematic.mixin.item; -import com.llamalad7.mixinextras.sugar.Local; +import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.DebugStickItem; -import net.minecraft.item.ItemStack; +import net.minecraft.util.Util; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(DebugStickItem.class) public class DebugStickItemExtender { + @Unique + private static final String KEY = Util.createTranslationKey("item", ItemKeys.DEBUG_STICK.getValue()); + @Redirect( method = "use", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/DebugStickItem;getTranslationKey()Ljava/lang/String;" + value = "FIELD", + target = "Lnet/minecraft/item/DebugStickItem;translationKey:Ljava/lang/String;", + opcode = Opcodes.GETFIELD ) ) - private String getTranslationKeyUseItemStackVersion(DebugStickItem instance, @Local(argsOnly = true) ItemStack heldStack) { - return heldStack.getTranslationKey(); + private String translationKeyUseStaticKey(DebugStickItem instance) { + return KEY; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ElytraItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ElytraItemExtender.java deleted file mode 100644 index 3fec58bc..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ElytraItemExtender.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.item.ElytraItem; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -@Mixin(ElytraItem.class) -public class ElytraItemExtender { - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public static boolean isUsable(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) - .map(c -> c.isUsable(stack)) - .orElse(false); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/EquipmentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/EquipmentExtender.java deleted file mode 100644 index aa426794..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/item/EquipmentExtender.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.errorcraft.itematic.mixin.item; - -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.item.Equipment; -import net.minecraft.item.ItemStack; -import net.minecraft.stat.Stat; -import net.minecraft.stat.StatType; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(Equipment.class) -public interface EquipmentExtender { - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - @Nullable - static Equipment fromStack(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.EQUIPMENT).orElse(null); - } - - @Redirect( - method = "equipAndSwap", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/stat/StatType;getOrCreateStat(Ljava/lang/Object;)Lnet/minecraft/stat/Stat;" - ) - ) - private Stat doNotGetOrCreateStat(StatType instance, T key) { - return null; - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemAccessor.java index 934abe5e..e1138c0c 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemAccessor.java @@ -1,9 +1,8 @@ package net.errorcraft.itematic.mixin.item; -import com.google.common.collect.Interner; -import net.minecraft.component.ComponentMap; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; +import net.minecraft.registry.RegistryKeyedValue; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.world.RaycastContext; import net.minecraft.world.World; @@ -22,8 +21,13 @@ static BlockHitResult raycast(World world, PlayerEntity player, RaycastContext.F @Mixin(Item.Settings.class) interface SettingsAccessor { - @Accessor("COMPONENT_MAP_INTERNER") - static Interner componentInterner() { + @Accessor("ITEM_PREFIXED_TRANSLATION_KEY") + static RegistryKeyedValue itemNameSupplier() { + throw new AssertionError(); + } + + @Accessor("BLOCK_PREFIXED_TRANSLATION_KEY") + static RegistryKeyedValue blockNameSupplier() { throw new AssertionError(); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index bdd274dd..cada0f99 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -1,11 +1,10 @@ package net.errorcraft.itematic.mixin.item; -import com.google.common.collect.Interner; import net.errorcraft.itematic.access.item.ItemAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.UseDurationDataComponent; import net.errorcraft.itematic.inventory.StackReferenceUtil; -import net.errorcraft.itematic.item.ItemBase; +import net.errorcraft.itematic.item.ItemDisplay; import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemUtil; import net.errorcraft.itematic.item.component.ItemComponent; @@ -23,6 +22,7 @@ import net.fabricmc.fabric.api.item.v1.FabricItem; import net.minecraft.block.BlockState; import net.minecraft.component.ComponentMap; +import net.minecraft.component.ComponentType; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.component.type.ToolComponent; @@ -47,12 +47,10 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ClickType; -import net.minecraft.util.Hand; -import net.minecraft.util.StringHelper; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -71,21 +69,43 @@ public abstract class ItemExtender implements ItemAccess, FabricItem { private ComponentMap components; @Unique - private static final Interner COMPONENT_INTERNER = ItemAccessor.SettingsAccessor.componentInterner(); - @Unique - private ItemBase base; + private ItemDisplay display; + @Unique private ItemComponentSet itemComponents; + @Unique private ItemEventMap events; + @Redirect( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/Item$Settings;getTranslationKey()Ljava/lang/String;" + ) + ) + private String getTranslationKeyReturnNull(Item.Settings instance) { + return null; + } + + @Redirect( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/Item$Settings;getModelId()Lnet/minecraft/util/Identifier;" + ) + ) + private Identifier getModelIdReturnNull(Item.Settings instance) { + return null; + } + @Inject( method = "getMaxCount", at = @At("HEAD"), cancellable = true ) private void checkStackableItemComponent(CallbackInfoReturnable info) { - if (!this.itematic$hasComponent(ItemComponentTypes.STACKABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.STACKABLE)) { info.setReturnValue(ItemUtil.UNSTACKABLE_MAX_STACK_SIZE); } } @@ -252,9 +272,9 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai at = @At("HEAD") ) private void onItemEntityDestroyedUseItemComponent(ItemEntity entity, CallbackInfo info) { - this.itematic$getComponent(ItemComponentTypes.BLOCK) + this.itematic$getBehavior(ItemComponentTypes.BLOCK) .ifPresent(c -> c.onDestroyed(entity)); - this.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + this.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .ifPresent(c -> c.onDestroyed(entity)); } @@ -301,7 +321,7 @@ public void finishUsingUseItemComponent(ItemStack stack, World world, LivingEnti this.itematic$invokeEvent(ItemEvents.FINISHED_USING, context); } - this.itematic$getComponent(ItemComponentTypes.CONSUMABLE) + this.itematic$getBehavior(ItemComponentTypes.CONSUMABLE) .ifPresent(c -> c.consume(user, stack, stackReference::set, world, user.getActiveHand())); info.setReturnValue(stackReference.get()); } @@ -359,7 +379,7 @@ public void onCraft(ItemStack stack, World world, CallbackInfo info) { */ @Overwrite public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { - this.base.tooltip() + this.display.tooltip() .ifPresent(tooltip::addAll); for (ItemComponent component : this.itemComponents) { component.appendTooltip(stack, context, tooltip, type); @@ -372,7 +392,7 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List info) { - this.itematic$getComponent(ItemComponentTypes.DEBUG_STICK) + this.itematic$getBehavior(ItemComponentTypes.DEBUG_STICK) .ifPresent(c -> { c.use(miner, state, world, pos); info.setReturnValue(false); @@ -407,7 +427,7 @@ private boolean isCorrectForDropsPassItemStack(ToolComponent instance, BlockStat cancellable = true ) public void checkPointableItemComponent(ItemStack stack, CallbackInfoReturnable info) { - if (this.itematic$hasComponent(ItemComponentTypes.POINTABLE) && stack.contains(DataComponentTypes.LODESTONE_TRACKER)) { + if (this.itematic$hasBehavior(ItemComponentTypes.POINTABLE) && stack.contains(DataComponentTypes.LODESTONE_TRACKER)) { info.setReturnValue(true); } } @@ -418,7 +438,7 @@ public void checkPointableItemComponent(ItemStack stack, CallbackInfoReturnable< */ @Overwrite public boolean canBeNested() { - return this.itematic$getComponent(ItemComponentTypes.BLOCK) + return this.itematic$getBehavior(ItemComponentTypes.BLOCK) .map(BlockItemComponent::canBeNested) .orElse(true); } @@ -429,7 +449,7 @@ public boolean canBeNested() { */ @Overwrite public SoundEvent getBreakSound() { - return this.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) + return this.itematic$getBehavior(ItemComponentTypes.DAMAGEABLE) .flatMap(DamageableItemComponent::breakSound) .map(RegistryEntry::value) .orElse(SoundEvents.ENTITY_ITEM_BREAK); @@ -441,7 +461,7 @@ public SoundEvent getBreakSound() { */ @Overwrite public boolean isNetworkSynced() { - return this.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return this.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } @Inject( @@ -450,7 +470,7 @@ public boolean isNetworkSynced() { cancellable = true ) public void getUseActionUseItemComponent(ItemStack stack, CallbackInfoReturnable info) { - if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.USEABLE)) { info.setReturnValue(UseAction.NONE); return; } @@ -464,7 +484,7 @@ public void getUseActionUseItemComponent(ItemStack stack, CallbackInfoReturnable */ @Overwrite public int getMaxUseTime(ItemStack stack, LivingEntity user) { - if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.USEABLE)) { return 0; } @@ -478,26 +498,27 @@ public int getMaxUseTime(ItemStack stack, LivingEntity user) { /** * @author ErrorCraft - * @reason Uses the ItemBase implementation for data-driven items. + * @reason Uses the ItemDisplay implementation for data-driven items. */ @Overwrite - public String getTranslationKey() { - return this.base.translationKey(); + public final String getTranslationKey() { + return this.display.translationKey(); } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public String getTranslationKey(ItemStack stack) { - return this.itematic$getComponent(ItemComponentTypes.POINTABLE) + @Inject( + method = "getName(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/text/Text;", + at = @At("HEAD"), + cancellable = true + ) + public void getName(ItemStack stack, CallbackInfoReturnable info) { + this.itematic$getBehavior(ItemComponentTypes.POINTABLE) .flatMap(c -> c.lodestoneTranslationKey(stack)) - .or(() -> this.itematic$getComponent(ItemComponentTypes.POTION_HOLDER) - .map(c -> c.translationKey(stack, this.getTranslationKey()))) - .or(() -> this.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) - .flatMap(c -> c.translationKey(stack, this.getTranslationKey()))) - .orElseGet(this::getTranslationKey); + .or(() -> this.itematic$getBehavior(ItemComponentTypes.POTION_HOLDER) + .map(c -> c.translationKey(stack, this.display.translationKey()))) + .or(() -> this.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) + .flatMap(c -> c.translationKey(stack, this.display.translationKey()))) + .map(Text::translatable) + .ifPresent(info::setReturnValue); } /** @@ -506,7 +527,7 @@ public String getTranslationKey(ItemStack stack) { */ @Overwrite public Optional getTooltipData(ItemStack stack) { - return this.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + return this.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .flatMap(c -> c.tooltipData(stack)); } @@ -516,7 +537,7 @@ public Optional getTooltipData(ItemStack stack) { cancellable = true ) private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnable info) { - if (!stack.itematic$hasComponent(ItemComponentTypes.TEXT_HOLDER)) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER)) { return; } @@ -533,28 +554,28 @@ private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnabl } @Override - public ItemBase itematic$itemBase() { - return this.base; + public ItemDisplay itematic$display() { + return this.display; } @Override - public void itematic$setItemBase(ItemBase base) { - this.base = base; + public void itematic$setDisplay(ItemDisplay display) { + this.display = display; } @Override - public ItemComponentSet itematic$components() { + public ItemComponentSet itematic$behavior() { return this.itemComponents; } @Override - public void itematic$setComponents(ItemComponentSet components) { + public void itematic$setBehavior(ItemComponentSet components) { this.itemComponents = components; this.components = this.initializeComponents(); } @Override - public > boolean itematic$hasComponent(ItemComponentType type) { + public > boolean itematic$hasBehavior(ItemComponentType type) { if (this.itemComponents == null) { return false; } @@ -562,7 +583,7 @@ private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnabl } @Override - public > Optional itematic$getComponent(ItemComponentType type) { + public > Optional itematic$getBehavior(ItemComponentType type) { if (this.itemComponents == null) { return Optional.empty(); } @@ -586,7 +607,7 @@ private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnabl @Override public boolean itematic$mayStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { - return this.itematic$getComponent(ItemComponentTypes.FOOD) + return this.itematic$getBehavior(ItemComponentTypes.FOOD) .map(c -> c.mayStartUsing(user, stack)) .orElse(true); } @@ -601,10 +622,12 @@ private static void tryUpdateItemStack(LivingEntity target, Hand hand, ItemStack if (target == null) { return; } + ItemStack newStack = stackReference.get(); if (stack == newStack) { return; } + target.setStackInHand(hand, newStack); } @@ -612,7 +635,7 @@ private static void tryUpdateItemStack(LivingEntity target, Hand hand, ItemStack private ComponentMap initializeComponents() { ComponentMap.Builder componentsBuilder = ComponentMap.builder() .addAll(DataComponentTypes.DEFAULT_ITEM_COMPONENTS); - this.base.addComponents(componentsBuilder); + this.display.addComponents(componentsBuilder); AttributeModifiersComponent.Builder attributeModifiersBuilder = AttributeModifiersComponent.builder(); for (ItemComponent component : this.itemComponents) { component.addComponents(componentsBuilder); @@ -624,7 +647,7 @@ private ComponentMap initializeComponents() { componentsBuilder.add(DataComponentTypes.ATTRIBUTE_MODIFIERS, attributeModifiers); } - return COMPONENT_INTERNER.intern(componentsBuilder.build()); + return componentsBuilder.build(); } @Mixin(Item.Settings.class) @@ -639,5 +662,16 @@ public static class SettingsExtender { private ItemStack newItemStackUseEmptyItemStack(ItemConvertible item) { return ItemStack.EMPTY; } + + @Redirect( + method = "getValidatedComponents", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/component/ComponentMap$Builder;add(Lnet/minecraft/component/ComponentType;Ljava/lang/Object;)Lnet/minecraft/component/ComponentMap$Builder;" + ) + ) + private ComponentMap.Builder doNotAddDataComponents(ComponentMap.Builder instance, ComponentType type, @Nullable T value) { + return instance; + } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java index 1aa7bd91..2c3a3899 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java @@ -338,7 +338,7 @@ private RegistryEntry getEntryUseField(RegistryEntry item) { cancellable = true ) private void checkStackableItemComponent(CallbackInfoReturnable info) { - if (!this.itematic$hasComponent(ItemComponentTypes.STACKABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.STACKABLE)) { info.setReturnValue(ItemUtil.UNSTACKABLE_MAX_STACK_SIZE); } } @@ -444,7 +444,7 @@ private void checkNullRegistryEntry(RegistryEntryList registryEntryList, C cancellable = true ) public void containsDataComponentUseItemBehaviorComponent(ItemStack ingredient, CallbackInfoReturnable info) { - if (!this.itematic$hasComponent(ItemComponentTypes.REPAIRABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.REPAIRABLE)) { info.setReturnValue(false); } } @@ -457,7 +457,7 @@ public void containsDataComponentUseItemBehaviorComponent(ItemStack ingredient, ) ) public boolean containsDataComponentUseItemBehaviorComponent(boolean original) { - return original && this.itematic$hasComponent(ItemComponentTypes.ENCHANTABLE); + return original && this.itematic$hasBehavior(ItemComponentTypes.ENCHANTABLE); } @Inject( @@ -494,7 +494,7 @@ private static boolean isOfUseRegistryEntryCheck(ItemStack instance, Item item, cancellable = true ) private void checkForChargeableShooter(CallbackInfoReturnable info) { - this.itematic$getComponent(ItemComponentTypes.SHOOTER) + this.itematic$getBehavior(ItemComponentTypes.SHOOTER) .map(ShooterItemComponent::method) .filter(method -> method.type() == ShooterMethodTypes.CHARGEABLE) .ifPresent(method -> info.setReturnValue(true)); @@ -522,15 +522,12 @@ public boolean takesDamageFrom(DamageSource source) { } @Inject( - method = "getName", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;" - ), + method = "getItemName", + at = @At("HEAD"), cancellable = true ) - private void getNameGetItemCheckNullEntry(CallbackInfoReturnable info) { - if (this.entry == null) { + private void checkEmptyStack(CallbackInfoReturnable info) { + if (this.isEmpty()) { info.setReturnValue(Text.empty()); } } @@ -543,7 +540,7 @@ private void getNameGetItemCheckNullEntry(CallbackInfoReturnable info) { ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return this.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return this.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } @WrapWithCondition( @@ -607,7 +604,7 @@ private void postMineUseRegistryEntryNullCheck(World world, BlockState state, Bl at = @At("RETURN") ) private int limitDamageApplied(int original) { - return this.itematic$getComponent(ItemComponentTypes.DAMAGEABLE) + return this.itematic$getBehavior(ItemComponentTypes.DAMAGEABLE) .map(c -> Math.min(c.maximumDamage((ItemStack)(Object) this) - this.getDamage(), original)) .orElse(original); } @@ -667,7 +664,7 @@ private Stat getOrCreateStatUseRegistryEntry(StatType instance, ) ) private ActionResult.Success doNotModifyResultingItemStackIfNotUseable(ActionResult.Success instance, ItemStack newHandStack, Operation original) { - if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.USEABLE)) { return instance; } @@ -680,7 +677,7 @@ private ActionResult.Success doNotModifyResultingItemStackIfNotUseable(ActionRes cancellable = true ) private void checkForUseableBehavior(LivingEntity user, ItemStack stack, CallbackInfoReturnable info) { - if (!this.itematic$hasComponent(ItemComponentTypes.USEABLE)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.USEABLE)) { info.setReturnValue((ItemStack)(Object) this); } } @@ -778,17 +775,17 @@ public boolean canBeEnchantedWith(RegistryEntry enchantment, Enchan } @Override - public > boolean itematic$hasComponent(ItemComponentType type) { - return this.entry != null && this.entry.value().itematic$hasComponent(type); + public > boolean itematic$hasBehavior(ItemComponentType type) { + return this.entry != null && this.entry.value().itematic$hasBehavior(type); } @Override - public > Optional itematic$getComponent(ItemComponentType type) { + public > Optional itematic$getBehavior(ItemComponentType type) { if (this.entry == null) { return Optional.empty(); } - return this.entry.value().itematic$getComponent(type); + return this.entry.value().itematic$getBehavior(type); } @Override @@ -840,7 +837,7 @@ public boolean canBeEnchantedWith(RegistryEntry enchantment, Enchan @Override public double itematic$attackSpeedMultiplier() { - if (!this.itematic$hasComponent(ItemComponentTypes.WEAPON)) { + if (!this.itematic$hasBehavior(ItemComponentTypes.WEAPON)) { return 1.0d; } diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java index f5fe54f7..8825acf2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java @@ -13,7 +13,7 @@ public interface ContainerComponentModifiersExtender { class BundleContentsExtender implements ContainerComponentModifierAccess { @Override public BundleContentsComponent itematic$create(ItemStack stack, BundleContentsComponent component, Stream newContents) { - return stack.itematic$getComponent(ItemComponentTypes.ITEM_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .map(c -> c.createBuilder(stack, component)) .map(BundleContentsComponent.Builder::clear) .map(builder -> { diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/function/EnchantRandomlyLootFunctionExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/function/EnchantRandomlyLootFunctionExtender.java index be58d180..74f6d672 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/function/EnchantRandomlyLootFunctionExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/function/EnchantRandomlyLootFunctionExtender.java @@ -25,7 +25,7 @@ public class EnchantRandomlyLootFunctionExtender { ) ) private boolean isOfForBookUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + return instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto) .isPresent(); } @@ -38,7 +38,7 @@ private boolean isOfForBookUseItemComponent(ItemStack instance, Item item) { ) ) private static boolean isOfForBookUseItemComponentStatic(ItemStack instance, Item item, @Share("transformsInto") LocalRef> transformsInto) { - Optional> optionalItem = instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + Optional> optionalItem = instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto); optionalItem.ifPresent(transformsInto::set); return optionalItem.isPresent(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/function/ExplorationMapLootFunctionExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/function/ExplorationMapLootFunctionExtender.java index f1a9ac09..a41cd670 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/function/ExplorationMapLootFunctionExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/function/ExplorationMapLootFunctionExtender.java @@ -24,7 +24,7 @@ public class ExplorationMapLootFunctionExtender { ) ) private boolean isOfForMapUseItemComponentCheck(ItemStack instance, Item item, @Share("mappableItemComponent") LocalRef mappableItemComponent) { - Optional optionalComponent = instance.itematic$getComponent(ItemComponentTypes.MAPPABLE); + Optional optionalComponent = instance.itematic$getBehavior(ItemComponentTypes.MAPPABLE); optionalComponent.ifPresent(mappableItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/function/SetEnchantmentsLootFunctionExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/function/SetEnchantmentsLootFunctionExtender.java index dc44adae..8bc82a53 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/function/SetEnchantmentsLootFunctionExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/function/SetEnchantmentsLootFunctionExtender.java @@ -25,7 +25,7 @@ public class SetEnchantmentsLootFunctionExtender { ) ) private boolean isOfForBookUseItemComponent(ItemStack instance, Item item, @Share("transformedEntry") LocalRef> transformedEntry) { - Optional> optionalItem = instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + Optional> optionalItem = instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto); optionalItem.ifPresent(transformedEntry::set); return optionalItem.isPresent(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java index 27d546ea..40458b05 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java @@ -28,7 +28,7 @@ public class ArmorDyeRecipeExtender { ) ) private boolean isInForDyeableUseItemComponentCheck(ItemStack instance, TagKey tag) { - return instance.itematic$hasComponent(ItemComponentTypes.DYEABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.DYEABLE); } @ModifyConstant( @@ -42,7 +42,7 @@ private boolean isInForDyeableUseItemComponentCheck(ItemStack instance, TagKey clazz, @Local(ordinal = 1) ItemStack inputStack, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - Optional optionalComponent = inputStack.itematic$getComponent(ItemComponentTypes.DYE); + Optional optionalComponent = inputStack.itematic$getBehavior(ItemComponentTypes.DYE); optionalComponent.ifPresent(dyeItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java index c587626e..77422794 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java @@ -25,7 +25,7 @@ public class BannerDuplicateRecipeExtender { ) ) private boolean instanceOfBannerItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 2) ItemStack inputStack, @Share("dyeColor") LocalRef dyeColor) { - Optional optionalDyeColor = inputStack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + Optional optionalDyeColor = inputStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .flatMap(BannerPatternHolderItemComponent::color); optionalDyeColor.ifPresent(dyeColor::set); return optionalDyeColor.isPresent(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java index 98076f01..c055637e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java @@ -57,6 +57,6 @@ private boolean isOfForWritableBookUseRegistryKeyCheck(ItemStack instance, Item ) ) private boolean instanceOfWrittenBookItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack inputStack) { - return inputStack.itematic$hasComponent(ItemComponentTypes.TEXT_HOLDER); + return inputStack.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BrewingRecipeRegistryExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BrewingRecipeRegistryExtender.java index 19359b5b..4a3c665f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BrewingRecipeRegistryExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BrewingRecipeRegistryExtender.java @@ -46,7 +46,7 @@ public class BrewingRecipeRegistryExtender implements BrewingRecipeRegistryAcces */ @Overwrite private boolean isPotionType(ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.POTION_HOLDER); + return stack.itematic$hasBehavior(ItemComponentTypes.POTION_HOLDER); } /** diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java index 45e0f58c..d2bd1567 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java @@ -29,7 +29,7 @@ public class CraftingDecoratedPotRecipeExtender { ) ) private boolean isInForDecoratedPotIngredientsUseItemComponentCheck(ItemStack instance, TagKey tag) { - return !instance.isEmpty() && instance.itematic$hasComponent(ItemComponentTypes.DECORATED_POT_PATTERN); + return !instance.isEmpty() && instance.itematic$hasBehavior(ItemComponentTypes.DECORATED_POT_PATTERN); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarFadeRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarFadeRecipeExtender.java index 761f17ab..9ff9d1ad 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarFadeRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarFadeRecipeExtender.java @@ -40,7 +40,7 @@ private boolean fireworkStarUseRegistryKeyCheck(Ingredient instance, ItemStack s ) ) private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack inputStack) { - return inputStack.itematic$hasComponent(ItemComponentTypes.DYE); + return inputStack.itematic$hasBehavior(ItemComponentTypes.DYE); } @ModifyConstant( @@ -51,7 +51,7 @@ private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 1) ItemStack ingredient, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - Optional optionalComponent = ingredient.itematic$getComponent(ItemComponentTypes.DYE); + Optional optionalComponent = ingredient.itematic$getBehavior(ItemComponentTypes.DYE); optionalComponent.ifPresent(dyeItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java index 23345eba..23a8d7ca 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java @@ -34,7 +34,7 @@ public class FireworkStarRecipeExtender { ) ) private boolean containsKeyUseItemComponentCheck(Map instance, Object o, @Local ItemStack itemStack) { - return itemStack.itematic$hasComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER); + return itemStack.itematic$hasBehavior(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER); } @Redirect( @@ -46,7 +46,7 @@ private boolean containsKeyUseItemComponentCheck(Map V getUseItemComponent(Map instance, Object o, @Local ItemStack input) { - return (V) input.itematic$getComponent(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER) + return (V) input.itematic$getBehavior(ItemComponentTypes.FIREWORK_SHAPE_MODIFIER) .map(FireworkShapeModifierItemComponent::shape) .orElse(null); } @@ -121,7 +121,7 @@ private boolean testGunpowderUseRegistryKeyCheck(Ingredient instance, ItemStack ) ) private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack itemStack) { - return itemStack.itematic$hasComponent(ItemComponentTypes.DYE); + return itemStack.itematic$hasBehavior(ItemComponentTypes.DYE); } @ModifyConstant( @@ -132,7 +132,7 @@ private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack ingredient, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - Optional optionalComponent = ingredient.itematic$getComponent(ItemComponentTypes.DYE); + Optional optionalComponent = ingredient.itematic$getBehavior(ItemComponentTypes.DYE); optionalComponent.ifPresent(dyeItemComponent::set); return optionalComponent.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java index 8bbbf4cc..9c77ae7b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java @@ -56,13 +56,13 @@ private boolean matchesUseRegistryKeyCheck(ShapedRecipe instance, CraftingRecipe ) ) private static boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } @Unique private static boolean isValid(ItemStack stack, int index) { if (index == MAP_SLOT) { - return stack.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return stack.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } return stack.itematic$isOf(ItemKeys.PAPER); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java index 4bfe7817..038519e0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java @@ -40,7 +40,7 @@ private boolean isOfForShieldUseRegistryKeyCheck(ItemStack instance, Item item) ) ) private boolean instanceOfBannerItemUseItemComponent(Object reference, Class clazz, @Local(ordinal = 2) ItemStack slotStack) { - return slotStack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + return slotStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .map(BannerPatternHolderItemComponent::modifiable) .orElse(false); } @@ -72,7 +72,7 @@ private Item getItemUseNull(ItemStack instance) { ) ) private DyeColor getColorUseItemComponent(BannerItem instance, @Local(ordinal = 0) ItemStack bannerStack) { - return bannerStack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + return bannerStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .flatMap(BannerPatternHolderItemComponent::color) .orElse(DyeColor.WHITE); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/registry/BuiltinRegistriesExtender.java b/src/main/java/net/errorcraft/itematic/mixin/registry/BuiltinRegistriesExtender.java index 98ae11a0..5f45de5f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/registry/BuiltinRegistriesExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/registry/BuiltinRegistriesExtender.java @@ -1,7 +1,6 @@ package net.errorcraft.itematic.mixin.registry; import net.errorcraft.itematic.item.ItemUtil; -import net.errorcraft.itematic.item.armor.ArmorMaterials; import net.errorcraft.itematic.item.dispense.behavior.DispenseBehaviors; import net.errorcraft.itematic.item.group.entry.provider.ItemGroupEntryProviders; import net.errorcraft.itematic.item.smithing.template.SmithingTemplates; @@ -30,7 +29,6 @@ public class BuiltinRegistriesExtender { ) private static void initialiseCustomRegistries(CallbackInfo info) { REGISTRY_BUILDER.addRegistry(RegistryKeys.ITEM, ItemUtil::bootstrap) - .addRegistry(ItematicRegistryKeys.ARMOR_MATERIAL, ArmorMaterials::bootstrap) .addRegistry(ItematicRegistryKeys.ITEM_GROUP_ENTRY_PROVIDER, ItemGroupEntryProviders::bootstrap) .addRegistry(ItematicRegistryKeys.TRADE, Trades::bootstrap) .addRegistry(ItematicRegistryKeys.ACTION, Actions::bootstrap) diff --git a/src/main/java/net/errorcraft/itematic/mixin/registry/RegistriesExtender.java b/src/main/java/net/errorcraft/itematic/mixin/registry/RegistriesExtender.java index 75581560..01211f46 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/registry/RegistriesExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/registry/RegistriesExtender.java @@ -16,7 +16,7 @@ public class RegistriesExtender { cancellable = true ) private static > void doNotAddSpecificRegistries(RegistryKey> key, R registry, Registries.Initializer initializer, CallbackInfoReturnable info) { - if (Objects.equals(key, RegistryKeys.ITEM) || Objects.equals(key, RegistryKeys.ARMOR_MATERIAL)) { + if (Objects.equals(key, RegistryKeys.ITEM)) { info.setReturnValue(registry); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/registry/RegistryLoaderExtender.java b/src/main/java/net/errorcraft/itematic/mixin/registry/RegistryLoaderExtender.java index adc937e5..16adc0ee 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/registry/RegistryLoaderExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/registry/RegistryLoaderExtender.java @@ -5,7 +5,6 @@ import com.llamalad7.mixinextras.sugar.Local; import com.mojang.serialization.Codec; import net.errorcraft.itematic.item.ItemUtil; -import net.errorcraft.itematic.item.armor.ArmorMaterial; import net.errorcraft.itematic.item.dispense.behavior.DispenseBehavior; import net.errorcraft.itematic.item.group.entry.provider.ItemGroupEntryProvider; import net.errorcraft.itematic.item.smithing.template.SmithingTemplate; @@ -41,7 +40,6 @@ private static List> addCustomEntries(List>() .addAll(original) .add(createEntry(RegistryKeys.ITEM, ItemUtil.CODEC)) - .add(createEntry(ItematicRegistryKeys.ARMOR_MATERIAL, ArmorMaterial.CODEC)) .add(createEntry(ItematicRegistryKeys.ITEM_GROUP_ENTRY_PROVIDER, ItemGroupEntryProvider.CODEC)) .add(createEntry(ItematicRegistryKeys.TRADE, Trade.CODEC)) .add(createEntry(ItematicRegistryKeys.ACTION, ActionEntry.CODEC)) @@ -62,7 +60,6 @@ private static List> addCustomNetworkEntries(List>() .addAll(original) .add(createEntry(RegistryKeys.ITEM, ItemUtil.CODEC)) - .add(createEntry(ItematicRegistryKeys.ARMOR_MATERIAL, ArmorMaterial.CODEC)) .add(createEntry(ItematicRegistryKeys.ITEM_GROUP_ENTRY_PROVIDER, ItemGroupEntryProvider.CODEC)) .add(createEntry(ItematicRegistryKeys.TRADE, Trade.CODEC)) .add(createEntry(ItematicRegistryKeys.ACTION, ActionEntry.CODEC)) diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/AbstractFurnaceScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/AbstractFurnaceScreenHandlerExtender.java new file mode 100644 index 00000000..3905d5cf --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/AbstractFurnaceScreenHandlerExtender.java @@ -0,0 +1,23 @@ +package net.errorcraft.itematic.mixin.screen; + +import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.item.FuelRegistry; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.AbstractFurnaceScreenHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(AbstractFurnaceScreenHandler.class) +public class AbstractFurnaceScreenHandlerExtender { + @Redirect( + method = "isFuel", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/FuelRegistry;isFuel(Lnet/minecraft/item/ItemStack;)Z" + ) + ) + private boolean isFuelUseItemComponentCheck(FuelRegistry instance, ItemStack item) { + return item.itematic$hasBehavior(ItemComponentTypes.FUEL); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/AnvilScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/AnvilScreenHandlerExtender.java index c987ae38..68f3cf32 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/AnvilScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/AnvilScreenHandlerExtender.java @@ -51,6 +51,6 @@ private boolean isDamageableAlwaysTrue(ItemStack instance) { ) ) private boolean isOfForEnchantedBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.ENCHANTMENT_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.ENCHANTMENT_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java index a4cfa650..856e2a28 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java @@ -22,7 +22,7 @@ public static class PotionSlotExtender { ) ) private static boolean matchesIsOfUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.POTION_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.POTION_HOLDER); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java index 49ef002f..65aac27f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java @@ -29,7 +29,7 @@ public class CartographyTableScreenHandlerExtender { ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } @Redirect( @@ -100,7 +100,7 @@ public static class MapSlotExtender { ) ) private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.MAP_HOLDER); + return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/EnchantmentScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/EnchantmentScreenHandlerExtender.java index 587aab7c..ca1432d2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/EnchantmentScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/EnchantmentScreenHandlerExtender.java @@ -26,7 +26,7 @@ public class EnchantmentScreenHandlerExtender { ) ) private boolean isOfForBookUseItemComponent(ItemStack instance, Item item, @Share("transformsInto") LocalRef> transformsInto) { - Optional> optionalItem = instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + Optional> optionalItem = instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto); optionalItem.ifPresent(transformsInto::set); return optionalItem.isPresent(); @@ -51,7 +51,7 @@ private ItemStack withItemForEnchantedBookUseItemComponent(ItemStack instance, I ) ) private boolean isOfForBookUseItemComponent(ItemStack instance, Item item) { - return instance.itematic$getComponent(ItemComponentTypes.ENCHANTABLE) + return instance.itematic$getBehavior(ItemComponentTypes.ENCHANTABLE) .flatMap(EnchantableItemComponent::transformsInto) .isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/GrindstoneScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/GrindstoneScreenHandlerExtender.java index ee522b38..93c12f91 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/GrindstoneScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/GrindstoneScreenHandlerExtender.java @@ -25,7 +25,7 @@ public class GrindstoneScreenHandlerExtender { ) ) private boolean isOfForEnchantedBookUseItemComponent(ItemStack instance, Item item, @Share("transformsInto") LocalRef> transformsInto) { - Optional> optionalItem = instance.itematic$getComponent(ItemComponentTypes.ENCHANTMENT_HOLDER) + Optional> optionalItem = instance.itematic$getBehavior(ItemComponentTypes.ENCHANTMENT_HOLDER) .map(EnchantmentHolderItemComponent::grindingTransformsInto); optionalItem.ifPresent(transformsInto::set); return optionalItem.isPresent(); @@ -55,7 +55,7 @@ public static class EnchantedItemSlotExtender { ) ) private boolean isDamageableUseItemComponentCheck(ItemStack instance) { - return instance.itematic$hasComponent(ItemComponentTypes.ENCHANTABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.ENCHANTABLE); } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/LoomScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/LoomScreenHandlerExtender.java index f981936c..629894ae 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/LoomScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/LoomScreenHandlerExtender.java @@ -27,7 +27,7 @@ public class LoomScreenHandlerExtender { ) ) private boolean instanceOfBannerPatternItemUseItemComponent(Object reference, Class clazz, ItemStack stack, @Share("bannerPatternItemComponent") LocalRef bannerPatternItemComponent) { - Optional optionalComponent = stack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN); + Optional optionalComponent = stack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN); optionalComponent.ifPresent(bannerPatternItemComponent::set); return optionalComponent.isPresent(); } @@ -60,7 +60,7 @@ private TagKey getPatternUseItemComponent(BannerPatternItem insta ) ) private boolean instanceOfBannerItemUseItemComponent(Object reference, Class clazz, @Local(ordinal = 1) ItemStack slotStack) { - return slotStack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + return slotStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .map(BannerPatternHolderItemComponent::modifiable) .orElse(false); } @@ -73,7 +73,7 @@ private boolean instanceOfBannerItemUseItemComponent(Object reference, Class clazz, @Local(ordinal = 1) ItemStack slotStack) { - return slotStack.itematic$hasComponent(ItemComponentTypes.DYE); + return slotStack.itematic$hasBehavior(ItemComponentTypes.DYE); } @ModifyConstant( @@ -84,7 +84,7 @@ private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 1) ItemStack slotStack) { - return slotStack.itematic$hasComponent(ItemComponentTypes.BANNER_PATTERN); + return slotStack.itematic$hasBehavior(ItemComponentTypes.BANNER_PATTERN); } @Redirect( @@ -106,7 +106,7 @@ private Item getItemUseNull(ItemStack instance) { ) ) private DyeColor getColorUseItemComponent(DyeItem instance, @Local(ordinal = 1) ItemStack dyeStack) { - return dyeStack.itematic$getComponent(ItemComponentTypes.DYE) + return dyeStack.itematic$getBehavior(ItemComponentTypes.DYE) .map(DyeItemComponent::color) .orElse(DyeColor.WHITE); } @@ -121,7 +121,7 @@ public static class BannerSlotExtender { ) ) private boolean instanceOfBannerItemUseItemComponent(Object reference, Class clazz, ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.BANNER_PATTERN_HOLDER) + return stack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .map(BannerPatternHolderItemComponent::modifiable) .orElse(false); } @@ -137,7 +137,7 @@ public static class DyeSlotExtender { ) ) private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.DYE); + return stack.itematic$hasBehavior(ItemComponentTypes.DYE); } } @@ -151,7 +151,7 @@ public static class BannerPatternSlotExtender { ) ) private boolean instanceOfBannerPatternItemUseItemComponentCheck(Object reference, Class clazz, ItemStack stack) { - return stack.itematic$hasComponent(ItemComponentTypes.BANNER_PATTERN); + return stack.itematic$hasBehavior(ItemComponentTypes.BANNER_PATTERN); } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java index ad83dd2d..0a618a70 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java @@ -24,7 +24,7 @@ public class ServerPlayNetworkHandlerExtender { ) ) private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasComponent(ItemComponentTypes.WRITABLE); + return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); } @Redirect( @@ -35,7 +35,7 @@ private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Ite ) ) private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item, @Share("writable") LocalRef writable) { - Optional optionalWritable = instance.itematic$getComponent(ItemComponentTypes.WRITABLE); + Optional optionalWritable = instance.itematic$getBehavior(ItemComponentTypes.WRITABLE); optionalWritable.ifPresent(writable::set); return optionalWritable.isPresent(); } diff --git a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java index f68b28e4..eace992f 100644 --- a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java +++ b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java @@ -40,6 +40,7 @@ public boolean testExtraFields(ItemStack stack) { if (!this.testBehavior(stack)) { return false; } + return this.testDataComponents(stack); } @@ -47,11 +48,13 @@ private boolean testBehavior(ItemStack stack) { if (this.behavior.isEmpty()) { return true; } + for (ItemComponentType type : this.behavior.get()) { - if (!stack.itematic$hasComponent(type)) { + if (!stack.itematic$hasBehavior(type)) { return false; } } + return true; } diff --git a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java b/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java index 460fdd11..23d64e6e 100644 --- a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java +++ b/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java @@ -95,7 +95,7 @@ public IngredientPlacement getIngredientPlacement() { } private boolean isExpectedColor(ItemStack stack) { - return stack.itematic$getComponent(ItemComponentTypes.DYE) + return stack.itematic$getBehavior(ItemComponentTypes.DYE) .map(DyeItemComponent::color) .map(color -> this.color == color) .orElse(false); diff --git a/src/main/java/net/errorcraft/itematic/registry/ItematicRegistryKeys.java b/src/main/java/net/errorcraft/itematic/registry/ItematicRegistryKeys.java index fd9c1abf..7d4d9686 100644 --- a/src/main/java/net/errorcraft/itematic/registry/ItematicRegistryKeys.java +++ b/src/main/java/net/errorcraft/itematic/registry/ItematicRegistryKeys.java @@ -1,6 +1,5 @@ package net.errorcraft.itematic.registry; -import net.errorcraft.itematic.item.armor.ArmorMaterial; import net.errorcraft.itematic.item.color.ItemColorType; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.dispense.behavior.DispenseBehavior; @@ -25,7 +24,6 @@ public class ItematicRegistryKeys { public static final RegistryKey>> ITEM_COMPONENT_TYPE = RegistryKey.ofRegistry(Identifier.ofVanilla("item_component_type")); - public static final RegistryKey> ARMOR_MATERIAL = RegistryKey.ofRegistry(Identifier.ofVanilla("armor_material")); public static final RegistryKey>> ITEM_COLOR_TYPE = RegistryKey.ofRegistry(Identifier.ofVanilla("item_color_type")); public static final RegistryKey> DISPENSE_BEHAVIOR = RegistryKey.ofRegistry(Identifier.ofVanilla("dispense_behavior")); public static final RegistryKey> ITEM_EVENT = RegistryKey.ofRegistry(Identifier.ofVanilla("item_event")); diff --git a/src/main/java/net/errorcraft/itematic/sound/SoundEventKeys.java b/src/main/java/net/errorcraft/itematic/sound/SoundEventKeys.java index bc9bee11..7a9ec32f 100644 --- a/src/main/java/net/errorcraft/itematic/sound/SoundEventKeys.java +++ b/src/main/java/net/errorcraft/itematic/sound/SoundEventKeys.java @@ -6,16 +6,8 @@ import net.minecraft.util.Identifier; public class SoundEventKeys { - public static final RegistryKey ARMOR_EQUIP_CHAIN = of("item.armor.equip_chain"); - public static final RegistryKey ARMOR_EQUIP_DIAMOND = of("item.armor.equip_diamond"); public static final RegistryKey ARMOR_EQUIP_ELYTRA = of("item.armor.equip_elytra"); public static final RegistryKey ARMOR_EQUIP_GENERIC = of("item.armor.equip_generic"); - public static final RegistryKey ARMOR_EQUIP_GOLD = of("item.armor.equip_gold"); - public static final RegistryKey ARMOR_EQUIP_IRON = of("item.armor.equip_iron"); - public static final RegistryKey ARMOR_EQUIP_LEATHER = of("item.armor.equip_leather"); - public static final RegistryKey ARMOR_EQUIP_NETHERITE = of("item.armor.equip_netherite"); - public static final RegistryKey ARMOR_EQUIP_TURTLE = of("item.armor.equip_turtle"); - public static final RegistryKey ARMOR_EQUIP_WOLF = of("item.armor.equip_wolf"); public static final RegistryKey BOTTLE_EMPTY = of("item.bottle.empty"); public static final RegistryKey BOTTLE_FILL = of("item.bottle.fill"); public static final RegistryKey BUCKET_EMPTY = of("item.bucket.empty"); @@ -32,11 +24,10 @@ public class SoundEventKeys { public static final RegistryKey FIRE_CHARGE_USE = of("item.firecharge.use"); public static final RegistryKey FIRE_EXTINGUISH = of("block.fire.extinguish"); public static final RegistryKey FLINT_AND_STEEL_USE = of("item.flintandsteel.use"); - public static final RegistryKey GENERIC_DRINK = of("entity.generic.drink"); public static final RegistryKey GENERIC_SPLASH = of("entity.generic.splash"); public static final RegistryKey HOE_TILL = of("item.hoe.till"); public static final RegistryKey HONEY_BOTTLE_DRINK = of("item.honey_bottle.drink"); - public static final RegistryKey HORSE_SADDLE = of("entity.horse.saddle"); + public static final RegistryKey LLAMA_SWAG = of("entity.llama.swag"); public static final RegistryKey MUSIC_DISC_5 = of("music_disc.5"); public static final RegistryKey MUSIC_DISC_11 = of("music_disc.11"); public static final RegistryKey MUSIC_DISC_13 = of("music_disc.13"); @@ -61,7 +52,6 @@ public class SoundEventKeys { public static final RegistryKey SPYGLASS_USE = of("item.spyglass.use"); public static final RegistryKey SPYGLASS_STOP_USING = of("item.spyglass.stop_using"); public static final RegistryKey TNT_PRIMED = of("entity.tnt.primed"); - public static final RegistryKey WOLF_ARMOR_BREAK = of("item.wolf_armor.break"); private SoundEventKeys() {} diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/EquipEntityAtPositionAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/EquipEntityAtPositionAction.java index e0013614..a52cdd78 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/EquipEntityAtPositionAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/EquipEntityAtPositionAction.java @@ -11,7 +11,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.mob.MobEntity; import net.minecraft.item.ItemStack; -import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.util.math.Box; import java.util.List; @@ -33,7 +32,11 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { ItemStack equipment = context.stack(); - List entities = context.world().getEntitiesByClass(LivingEntity.class, new Box(context.blockPos(this.position)), EntityPredicates.EXCEPT_SPECTATOR.and(new EntityPredicates.Equipable(equipment))); + List entities = context.world().getEntitiesByClass( + LivingEntity.class, + new Box(context.blockPos(this.position)), + entity -> entity.canEquipFromDispenser(equipment) + ); if (entities.isEmpty()) { return false; } diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockFromItemAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockFromItemAction.java index 6abe0d28..d7f38f88 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockFromItemAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/PlaceBlockFromItemAction.java @@ -27,7 +27,7 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { - return context.stack().itematic$getComponent(ItemComponentTypes.BLOCK) + return context.stack().itematic$getBehavior(ItemComponentTypes.BLOCK) .map(component -> { PlaceBlockAction action = PlaceBlockAction.of(component.block(), this.position, this.decrementCount); return action.execute(context); diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/SaddleEntityAtPositionAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/SaddleEntityAtPositionAction.java index f0a94fb2..60394312 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/SaddleEntityAtPositionAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/SaddleEntityAtPositionAction.java @@ -35,7 +35,7 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { ItemStack stack = context.stack(); - return stack.itematic$getComponent(ItemComponentTypes.SADDLE) + return stack.itematic$getBehavior(ItemComponentTypes.SADDLE) .map(c -> { BlockPos position = context.blockPos(this.position); ServerWorld world = context.world(); diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/ShootProjectileFromItemAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/ShootProjectileFromItemAction.java index 23237970..94d8f910 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/ShootProjectileFromItemAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/ShootProjectileFromItemAction.java @@ -29,7 +29,7 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { return context.stack() - .itematic$getComponent(ItemComponentTypes.PROJECTILE) + .itematic$getBehavior(ItemComponentTypes.PROJECTILE) .map(c -> c.createEntity(context, this.position, 0.0f, this.power, this.uncertainty)) .map(entity -> { context.world().spawnEntity(entity); diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java index efc89a31..1ab228b3 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/SpawnEntityFromItemAction.java @@ -27,7 +27,7 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { return context.stack() - .itematic$getComponent(ItemComponentTypes.ENTITY) + .itematic$getBehavior(ItemComponentTypes.ENTITY) .map(itemComponent -> EntityPlacer.action(context, this.position, itemComponent) .place() .succeeds()) diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java index 09d3dc23..97db3c4e 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/UseBucketAction.java @@ -29,7 +29,7 @@ public ActionType type() { @Override public boolean execute(ActionContext context) { ItemStack stack = context.stack(); - return stack.itematic$getComponent(ItemComponentTypes.BUCKET) + return stack.itematic$getBehavior(ItemComponentTypes.BUCKET) .map(c -> { BlockPos pos = context.blockPos(this.position); BlockHitResult hitResult = new BlockHitResult(pos.toCenterPos(), context.side(), pos, true); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 66112d01..218589af 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -120,9 +120,6 @@ "net/minecraft/class_4059\u0024class_9076": [ "net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess" ], - "net/minecraft/class_4073": [ - "net/errorcraft/itematic/access/client/render/entity/feature/HorseArmorFeatureRendererAccess" - ], "net/minecraft/class_4538": [ "net/errorcraft/itematic/access/world/WorldViewAccess" ], @@ -141,9 +138,6 @@ "net/minecraft/class_8526": [ "net/errorcraft/itematic/access/block/entity/SherdsAccess" ], - "net/minecraft/class_9085": [ - "net/errorcraft/itematic/access/client/render/entity/feature/WolfArmorFeatureRendererAccess" - ], "net/minecraft/class_9276": [ "net/errorcraft/itematic/access/component/type/BundleContentsComponentAccess" ], diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 1728d590..29e532f9 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -89,6 +89,7 @@ "component.type.ConsumableComponentAccessor", "component.type.ConsumableComponentExtender", "component.type.DyedColorComponentExtender", + "component.type.EquippableComponentExtender", "component.type.ToolComponentExtender", "component.type.ToolComponentExtender$RuleExtender", "enchantment.EnchantmentHelperExtender", @@ -254,7 +255,6 @@ "fluid.WaterFluidExtender", "inventory.SimpleInventoryExtender", "item.AnimalArmorItemExtender$TypeExtender", - "item.ArmorMaterialsAccessor", "item.BrushItemAccessor", "item.BrushItemExtender", "item.BundleItemAccessor", @@ -263,8 +263,6 @@ "item.DebugStickItemAccessor", "item.DebugStickItemExtender", "item.DecorationItemAccessor", - "item.ElytraItemExtender", - "item.EquipmentExtender", "item.FilledMapItemAccessor", "item.FuelRegistryExtender$BuilderExtender", "item.GoatHornItemAccessor", @@ -349,6 +347,7 @@ "registry.entry.RegistryEntryListExtender$ListBackedExtender", "scoreboard.ScoreboardCriterionExtender", "scoreboard.ScoreboardStateExtender", + "screen.AbstractFurnaceScreenHandlerExtender", "screen.AnvilScreenHandlerExtender", "screen.BrewingStandScreenHandlerExtender$FuelSlotExtender", "screen.BrewingStandScreenHandlerExtender$PotionSlotExtender", From 7c2042953d537c61dd09067a3637521e1180c74b Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Thu, 5 Feb 2026 18:34:18 +0100 Subject: [PATCH 05/11] Port to 24w37a --- gradle.properties | 6 +- .../client/item/bar/ItemBarStyleLoader.java | 3 +- .../ClientPlayNetworkHandlerExtender.java | 14 +-- .../network/ClientPlayerEntityExtender.java | 19 ++-- .../ItemFrameEntityRendererExtender.java | 23 ----- .../feature/ArmorFeatureRendererExtender.java | 2 +- .../feature/CapeFeatureRendererExtender.java | 7 +- .../render/item/HeldItemRendererExtender.java | 19 ---- .../render/item/ItemRendererExtender.java | 20 ---- .../resources/itematic.client.mixins.json | 1 - .../item/TotemOfUndyingTestSuite.java | 31 ++++++ .../EquipmentItemComponentTestSuite.java | 12 +-- src/gametest/resources/fabric.mod.json | 1 + .../data/minecraft/item/black_carpet.json | 3 +- .../data/minecraft/item/blue_carpet.json | 3 +- .../data/minecraft/item/brown_carpet.json | 3 +- .../data/minecraft/item/chainmail_boots.json | 3 +- .../minecraft/item/chainmail_chestplate.json | 3 +- .../data/minecraft/item/chainmail_helmet.json | 3 +- .../minecraft/item/chainmail_leggings.json | 3 +- .../data/minecraft/item/cyan_carpet.json | 3 +- .../data/minecraft/item/diamond_boots.json | 3 +- .../minecraft/item/diamond_chestplate.json | 3 +- .../data/minecraft/item/diamond_helmet.json | 3 +- .../minecraft/item/diamond_horse_armor.json | 7 +- .../data/minecraft/item/diamond_leggings.json | 3 +- .../generated/data/minecraft/item/elytra.json | 3 +- .../data/minecraft/item/golden_boots.json | 5 +- .../minecraft/item/golden_chestplate.json | 5 +- .../data/minecraft/item/golden_helmet.json | 5 +- .../minecraft/item/golden_horse_armor.json | 7 +- .../data/minecraft/item/golden_leggings.json | 5 +- .../data/minecraft/item/gray_carpet.json | 3 +- .../data/minecraft/item/green_carpet.json | 3 +- .../data/minecraft/item/iron_boots.json | 3 +- .../data/minecraft/item/iron_chestplate.json | 3 +- .../data/minecraft/item/iron_helmet.json | 3 +- .../data/minecraft/item/iron_horse_armor.json | 7 +- .../data/minecraft/item/iron_leggings.json | 3 +- .../data/minecraft/item/leather_boots.json | 3 +- .../minecraft/item/leather_chestplate.json | 3 +- .../data/minecraft/item/leather_helmet.json | 3 +- .../minecraft/item/leather_horse_armor.json | 7 +- .../data/minecraft/item/leather_leggings.json | 3 +- .../minecraft/item/light_blue_carpet.json | 3 +- .../minecraft/item/light_gray_carpet.json | 3 +- .../data/minecraft/item/lime_carpet.json | 3 +- .../data/minecraft/item/magenta_carpet.json | 3 +- .../data/minecraft/item/netherite_boots.json | 3 +- .../minecraft/item/netherite_chestplate.json | 3 +- .../data/minecraft/item/netherite_helmet.json | 3 +- .../minecraft/item/netherite_leggings.json | 3 +- .../data/minecraft/item/orange_carpet.json | 3 +- .../data/minecraft/item/pink_carpet.json | 3 +- .../data/minecraft/item/purple_carpet.json | 3 +- .../data/minecraft/item/red_carpet.json | 3 +- .../generated/data/minecraft/item/shield.json | 3 +- .../data/minecraft/item/totem_of_undying.json | 48 +++++---- .../data/minecraft/item/turtle_helmet.json | 3 +- .../data/minecraft/item/white_carpet.json | 3 +- .../data/minecraft/item/wolf_armor.json | 4 +- .../data/minecraft/item/yellow_carpet.json | 3 +- .../entity/vehicle/BoatEntityTypeAccess.java | 8 -- .../itematic/access/item/ItemAccess.java | 3 + .../itematic/access/item/ItemStackAccess.java | 8 +- .../ContainerComponentModifierAccess.java | 2 +- .../errorcraft/itematic/item/ItemUtil.java | 14 ++- .../item/component/ItemComponentTypes.java | 1 - .../components/ArmorItemComponent.java | 27 ++++-- .../components/BlockItemComponent.java | 4 +- .../components/EntityItemComponent.java | 3 +- .../components/EquipmentItemComponent.java | 93 +++++++----------- .../components/ItemHolderItemComponent.java | 4 +- .../components/LifeSavingItemComponent.java | 37 ------- .../components/MapHolderItemComponent.java | 6 -- .../components/UseableItemComponent.java | 4 +- .../itematic/item/event/ItemEventKeys.java | 1 + .../itematic/item/event/ItemEventMap.java | 8 +- .../itematic/item/event/ItemEvents.java | 1 + .../loot/predicate/SideCheckPredicate.java | 4 +- .../ShearsDispenserBehaviorAccessor.java | 3 +- .../BrewingStandBlockEntityExtender.java | 24 ----- .../entity/LecternBlockEntityExtender.java | 50 +++++----- .../type/BundleContentsComponentExtender.java | 9 +- .../type/EquippableComponentExtender.java | 21 ++++ .../mixin/entity/ItemEntityExtender.java | 11 --- .../mixin/entity/LivingEntityExtender.java | 73 ++++++++------ .../task/GiveGiftsToHeroTaskExtender.java | 46 --------- .../decoration/ItemFrameEntityExtender.java | 13 --- .../entity/passive/AllayEntityExtender.java | 16 --- .../passive/ArmadilloEntityExtender.java | 12 --- .../entity/passive/ChickenEntityExtender.java | 15 --- .../entity/passive/PandaEntityExtender.java | 36 ------- .../entity/passive/WolfEntityExtender.java | 12 +-- .../entity/player/PlayerEntityExtender.java | 31 +++++- .../player/ServerPlayerEntityExtender.java | 55 ++--------- .../entity/vehicle/BoatEntityExtender.java | 97 +------------------ .../vehicle/ChestBoatEntityExtender.java | 2 +- .../itematic/mixin/item/ItemExtender.java | 14 +-- .../mixin/item/ItemStackExtender.java | 64 +++++------- .../ContainerComponentModifierExtender.java | 12 +-- .../ContainerComponentModifiersExtender.java | 2 +- .../recipe/MapCloningRecipeExtender.java | 34 +------ .../recipe/MapExtendingRecipeExtender.java | 12 --- .../BrewingStandScreenHandlerExtender.java | 15 --- ...CartographyTableScreenHandlerExtender.java | 50 +++------- .../ServerPlayNetworkHandlerExtender.java | 21 ++-- .../itematic/mixin/world/WorldExtender.java | 5 +- .../item/ItemPredicateExtraFields.java | 6 +- .../serialization/ItematicCodecs.java | 44 --------- .../itematic/serialization/SetCodec.java | 58 +++++++++++ .../action/actions/ShearAtPositionAction.java | 2 +- src/main/resources/itematic.mixins.json | 4 - 113 files changed, 491 insertions(+), 981 deletions(-) delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java create mode 100644 src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java delete mode 100644 src/main/java/net/errorcraft/itematic/access/entity/vehicle/BoatEntityTypeAccess.java delete mode 100644 src/main/java/net/errorcraft/itematic/item/component/components/LifeSavingItemComponent.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GiveGiftsToHeroTaskExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/serialization/SetCodec.java diff --git a/gradle.properties b/gradle.properties index de7cc58d..9492661f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w36a - yarn_mappings=24w36a+build.6 + minecraft_version=24w37a + yarn_mappings=24w37a+build.6 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.104.0+1.21.2 + fabric_version=0.104.1+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyleLoader.java b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyleLoader.java index 70c257b7..58b7500d 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyleLoader.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyleLoader.java @@ -9,7 +9,6 @@ import net.minecraft.resource.ResourceManager; import net.minecraft.resource.ResourceReloader; import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; import org.slf4j.Logger; import java.io.BufferedReader; @@ -25,7 +24,7 @@ public class ItemBarStyleLoader implements ResourceReloader { private final Map styles = new HashMap<>(); @Override - public CompletableFuture reload(Synchronizer synchronizer, ResourceManager manager, Profiler prepareProfiler, Profiler applyProfiler, Executor prepareExecutor, Executor applyExecutor) { + public CompletableFuture reload(Synchronizer synchronizer, ResourceManager manager, Executor prepareExecutor, Executor applyExecutor) { return CompletableFuture.supplyAsync(() -> FINDER.findResources(manager), prepareExecutor) .thenCompose(synchronizer::whenPrepared) .thenAcceptAsync(this::apply, applyExecutor); diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java index 9d1e0396..164d9841 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayNetworkHandlerExtender.java @@ -2,7 +2,7 @@ import net.errorcraft.itematic.access.network.listener.ClientPlayPacketListenerAccess; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.errorcraft.itematic.item.event.ItemEvents; import net.errorcraft.itematic.mixin.item.ItemGroupsAccessor; import net.errorcraft.itematic.network.packet.s2c.play.TwirlS2CPacket; import net.errorcraft.itematic.world.action.actions.TwirlPlayerAction; @@ -11,8 +11,8 @@ import net.minecraft.client.network.ClientConnectionState; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.world.ClientWorld; +import net.minecraft.component.ComponentType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.network.ClientConnection; @@ -44,18 +44,18 @@ private static void resetItemGroupDisplayContext(CallbackInfo info) { } @Redirect( - method = "getActiveTotemOfUndying", + method = "getActiveDeathProtector", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" ) ) - private static boolean isOfForTotemOfUndyingUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.LIFE_SAVING); + private static boolean containsDeathProtectionDataComponentUseEventListenerCheck(ItemStack instance, ComponentType type) { + return instance.itematic$hasEventListener(ItemEvents.BEFORE_DEATH_HOLDER); } @Redirect( - method = "getActiveTotemOfUndying", + method = "getActiveDeathProtector", at = @At( value = "NEW", target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java index dca2a21c..7f57b958 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/network/ClientPlayerEntityExtender.java @@ -2,22 +2,23 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ClientPlayerEntity.class) public class ClientPlayerEntityExtender { - @Redirect( + @Inject( method = "useBook", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); + private void checkPresenceTextHolderBehavior(ItemStack book, Hand hand, CallbackInfo info) { + if (!book.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER)) { + info.cancel(); + } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java deleted file mode 100644 index 7f042818..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/ItemFrameEntityRendererExtender.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.entity; - -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.client.render.entity.ItemFrameEntityRenderer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(ItemFrameEntityRenderer.class) -public class ItemFrameEntityRendererExtender { - @Redirect( - method = "getModelId", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java index 8a4cb549..fcc1fcef 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/ArmorFeatureRendererExtender.java @@ -32,7 +32,7 @@ private static void checkPresenceEquipmentBehavior(ItemStack stack, EquipmentSlo at = @At("HEAD"), cancellable = true ) - private void checkPresenceEquipmentBehavior(MatrixStack matrices, VertexConsumerProvider vertexConsumers, S state, ItemStack stack, EquipmentSlot slot, int light, A armorModel, CallbackInfo info) { + private void checkPresenceEquipmentBehavior(MatrixStack matrices, VertexConsumerProvider vertexConsumers, ItemStack stack, EquipmentSlot slot, int light, A armorModel, CallbackInfo info) { if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { info.cancel(); } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java index adeddd59..b8a743f6 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/CapeFeatureRendererExtender.java @@ -3,6 +3,7 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.render.entity.feature.CapeFeatureRenderer; import net.minecraft.item.ItemStack; +import net.minecraft.item.equipment.EquipmentModel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -11,12 +12,12 @@ @Mixin(CapeFeatureRenderer.class) public class CapeFeatureRendererExtender { @Inject( - method = "method_64075", + method = "hasCustomModelForLayer", at = @At("HEAD"), cancellable = true ) - private void checkPresenceEquipmentBehavior(ItemStack itemStack, CallbackInfoReturnable info) { - if (!itemStack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + private void checkPresenceEquipmentBehavior(ItemStack stack, EquipmentModel.LayerType layerType, CallbackInfoReturnable info) { + if (!stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { info.setReturnValue(false); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java index 609c5096..9938f26b 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java @@ -186,23 +186,4 @@ private static boolean isOfForCrossbowUseItemComponentStatic(ItemStack instance, .filter(method -> method.type() == ShooterMethodTypes.CHARGEABLE) .isPresent(); } - - @Redirect( - method = "renderFirstPersonItem", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;FILLED_MAP:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java index a1e91653..41fac845 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java @@ -1,7 +1,6 @@ package net.errorcraft.itematic.mixin.client.render.item; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -54,25 +53,6 @@ private boolean isOfForSpyglassUseRegistryKeyCheck(ItemStack instance, Item item return instance.itematic$isOf(ItemKeys.SPYGLASS); } - @Redirect( - method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;BUNDLE:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.ITEM_HOLDER); - } - @Redirect( method = "usesDynamicDisplay", at = @At( diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index dcec27ff..7190f224 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -45,7 +45,6 @@ "render.block.entity.DecoratedPotBlockEntityRendererExtender", "render.entity.FishingBobberEntityRendererExtender", "render.entity.ItemEntityRendererExtender", - "render.entity.ItemFrameEntityRendererExtender", "render.entity.PlayerEntityRendererExtender", "render.entity.feature.ArmorFeatureRendererExtender", "render.entity.feature.CapeFeatureRendererExtender", diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java new file mode 100644 index 00000000..239498bd --- /dev/null +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java @@ -0,0 +1,31 @@ +package net.errorcraft.itematic.gametest.item; + +import net.errorcraft.itematic.gametest.Assert; +import net.errorcraft.itematic.item.ItemKeys; +import net.fabricmc.fabric.api.gametest.v1.FabricGameTest; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.test.GameTest; +import net.minecraft.test.TestContext; +import net.minecraft.util.Hand; +import net.minecraft.world.GameMode; + +public class TotemOfUndyingTestSuite { + @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) + public void holdingTotemOfUndyingSavesHolderFromDeath(TestContext context) { + PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); + ServerWorld world = context.getWorld(); + ItemStack stack = world.itematic$createStack(ItemKeys.TOTEM_OF_UNDYING); + player.setStackInHand(Hand.MAIN_HAND, stack); + player.damage(world.getDamageSources().fall(), Float.MAX_VALUE); + context.addInstantFinalTask(() -> { + Assert.areFloatsEqual(player.getHealth(), 1.0f, (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead"); + context.expectEntityHasEffect(player, StatusEffects.REGENERATION, 1); + context.expectEntityHasEffect(player, StatusEffects.ABSORPTION, 1); + context.expectEntityHasEffect(player, StatusEffects.FIRE_RESISTANCE, 0); + Assert.itemStackIsEmpty(player.getStackInHand(Hand.MAIN_HAND)); + }); + } +} diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java index 46100a77..854f11e2 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/EquipmentItemComponentTestSuite.java @@ -3,9 +3,9 @@ import net.errorcraft.itematic.gametest.Assert; import net.errorcraft.itematic.gametest.TestUtil; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.EquipmentItemComponent; import net.fabricmc.fabric.api.gametest.v1.FabricGameTest; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -24,9 +24,9 @@ public void usingItemEquipsStack(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.LEATHER_HELMET); player.setStackInHand(Hand.MAIN_HAND, stack); - EquipmentItemComponent component = TestUtil.getItemBehavior(stack, ItemComponentTypes.EQUIPMENT); + EquippableComponent equippable = TestUtil.getDataComponent(stack, DataComponentTypes.EQUIPPABLE); stack.use(world, player, Hand.MAIN_HAND); - context.addInstantFinalTask(() -> Assert.itemStackIsOf(player.getEquippedStack(component.slot()), ItemKeys.LEATHER_HELMET)); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(player.getEquippedStack(equippable.slot()), ItemKeys.LEATHER_HELMET)); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) @@ -35,9 +35,9 @@ public void usingItemThatIsNotSwappableDoesNotEquipStack(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.SHIELD); player.setStackInHand(Hand.MAIN_HAND, stack); - EquipmentItemComponent component = TestUtil.getItemBehavior(stack, ItemComponentTypes.EQUIPMENT); + EquippableComponent equippable = TestUtil.getDataComponent(stack, DataComponentTypes.EQUIPPABLE); stack.use(world, player, Hand.MAIN_HAND); - context.addInstantFinalTask(() -> Assert.itemStackIsEmpty(player.getEquippedStack(component.slot()))); + context.addInstantFinalTask(() -> Assert.itemStackIsEmpty(player.getEquippedStack(equippable.slot()))); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) diff --git a/src/gametest/resources/fabric.mod.json b/src/gametest/resources/fabric.mod.json index d267f031..22c20bef 100644 --- a/src/gametest/resources/fabric.mod.json +++ b/src/gametest/resources/fabric.mod.json @@ -38,6 +38,7 @@ "net.errorcraft.itematic.gametest.item.HoneyBottleTestSuite", "net.errorcraft.itematic.gametest.item.LeadTestSuite", "net.errorcraft.itematic.gametest.item.SignTestSuite", + "net.errorcraft.itematic.gametest.item.TotemOfUndyingTestSuite", "net.errorcraft.itematic.gametest.item.component.BlockItemComponentTestSuite", "net.errorcraft.itematic.gametest.item.component.ConsumableItemComponentTestSuite", "net.errorcraft.itematic.gametest.item.component.EquipmentItemComponentTestSuite", diff --git a/src/main/generated/data/minecraft/item/black_carpet.json b/src/main/generated/data/minecraft/item/black_carpet.json index 2c50712c..343f21e2 100644 --- a/src/main/generated/data/minecraft/item/black_carpet.json +++ b/src/main/generated/data/minecraft/item/black_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:black_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/blue_carpet.json b/src/main/generated/data/minecraft/item/blue_carpet.json index f99f6755..6033d83e 100644 --- a/src/main/generated/data/minecraft/item/blue_carpet.json +++ b/src/main/generated/data/minecraft/item/blue_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:blue_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/brown_carpet.json b/src/main/generated/data/minecraft/item/brown_carpet.json index a7eb46d9..b902f4b8 100644 --- a/src/main/generated/data/minecraft/item/brown_carpet.json +++ b/src/main/generated/data/minecraft/item/brown_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:brown_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/chainmail_boots.json b/src/main/generated/data/minecraft/item/chainmail_boots.json index 19547ce8..a7b7e5b1 100644 --- a/src/main/generated/data/minecraft/item/chainmail_boots.json +++ b/src/main/generated/data/minecraft/item/chainmail_boots.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", "model": "minecraft:chainmail", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:repairable": { "items": "#minecraft:repairs_chainmail_armor" diff --git a/src/main/generated/data/minecraft/item/chainmail_chestplate.json b/src/main/generated/data/minecraft/item/chainmail_chestplate.json index 4199e683..ea0088fd 100644 --- a/src/main/generated/data/minecraft/item/chainmail_chestplate.json +++ b/src/main/generated/data/minecraft/item/chainmail_chestplate.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", "model": "minecraft:chainmail", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:repairable": { "items": "#minecraft:repairs_chainmail_armor" diff --git a/src/main/generated/data/minecraft/item/chainmail_helmet.json b/src/main/generated/data/minecraft/item/chainmail_helmet.json index 8f649c92..a02acbf6 100644 --- a/src/main/generated/data/minecraft/item/chainmail_helmet.json +++ b/src/main/generated/data/minecraft/item/chainmail_helmet.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", "model": "minecraft:chainmail", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_chainmail_armor" diff --git a/src/main/generated/data/minecraft/item/chainmail_leggings.json b/src/main/generated/data/minecraft/item/chainmail_leggings.json index 27029266..101a1274 100644 --- a/src/main/generated/data/minecraft/item/chainmail_leggings.json +++ b/src/main/generated/data/minecraft/item/chainmail_leggings.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_chain", "model": "minecraft:chainmail", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:repairable": { "items": "#minecraft:repairs_chainmail_armor" diff --git a/src/main/generated/data/minecraft/item/cyan_carpet.json b/src/main/generated/data/minecraft/item/cyan_carpet.json index 8b10b3de..cd7974d5 100644 --- a/src/main/generated/data/minecraft/item/cyan_carpet.json +++ b/src/main/generated/data/minecraft/item/cyan_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:cyan_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/diamond_boots.json b/src/main/generated/data/minecraft/item/diamond_boots.json index c43dfb7a..33399d83 100644 --- a/src/main/generated/data/minecraft/item/diamond_boots.json +++ b/src/main/generated/data/minecraft/item/diamond_boots.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", "model": "minecraft:diamond", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:repairable": { "items": "#minecraft:repairs_diamond_armor" diff --git a/src/main/generated/data/minecraft/item/diamond_chestplate.json b/src/main/generated/data/minecraft/item/diamond_chestplate.json index 8d3f73a7..899fb1c0 100644 --- a/src/main/generated/data/minecraft/item/diamond_chestplate.json +++ b/src/main/generated/data/minecraft/item/diamond_chestplate.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", "model": "minecraft:diamond", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:repairable": { "items": "#minecraft:repairs_diamond_armor" diff --git a/src/main/generated/data/minecraft/item/diamond_helmet.json b/src/main/generated/data/minecraft/item/diamond_helmet.json index 01b4820e..bb8694b7 100644 --- a/src/main/generated/data/minecraft/item/diamond_helmet.json +++ b/src/main/generated/data/minecraft/item/diamond_helmet.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", "model": "minecraft:diamond", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_diamond_armor" diff --git a/src/main/generated/data/minecraft/item/diamond_horse_armor.json b/src/main/generated/data/minecraft/item/diamond_horse_armor.json index 3afd0e18..5e4883bd 100644 --- a/src/main/generated/data/minecraft/item/diamond_horse_armor.json +++ b/src/main/generated/data/minecraft/item/diamond_horse_armor.json @@ -6,10 +6,6 @@ "knockback_resistance": 0.0, "toughness": 2.0 }, - "minecraft:damageable": { - "break_sound": "minecraft:entity.item.break", - "durability": 528 - }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, @@ -17,8 +13,7 @@ "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_diamond", "model": "minecraft:diamond", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:stackable": 1 }, diff --git a/src/main/generated/data/minecraft/item/diamond_leggings.json b/src/main/generated/data/minecraft/item/diamond_leggings.json index 182c5bb9..fe28dbe2 100644 --- a/src/main/generated/data/minecraft/item/diamond_leggings.json +++ b/src/main/generated/data/minecraft/item/diamond_leggings.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_diamond", "model": "minecraft:diamond", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:repairable": { "items": "#minecraft:repairs_diamond_armor" diff --git a/src/main/generated/data/minecraft/item/elytra.json b/src/main/generated/data/minecraft/item/elytra.json index a7da64c8..d3c8d33d 100644 --- a/src/main/generated/data/minecraft/item/elytra.json +++ b/src/main/generated/data/minecraft/item/elytra.json @@ -10,8 +10,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_elytra", "model": "minecraft:elytra", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:glider": { "useable_if": { diff --git a/src/main/generated/data/minecraft/item/golden_boots.json b/src/main/generated/data/minecraft/item/golden_boots.json index 58f5ecea..1218aa45 100644 --- a/src/main/generated/data/minecraft/item/golden_boots.json +++ b/src/main/generated/data/minecraft/item/golden_boots.json @@ -7,7 +7,7 @@ "toughness": 0.0 }, "minecraft:damageable": { - "durability": 195 + "durability": 91 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", "model": "minecraft:gold", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:repairable": { "items": "#minecraft:repairs_golden_armor" diff --git a/src/main/generated/data/minecraft/item/golden_chestplate.json b/src/main/generated/data/minecraft/item/golden_chestplate.json index 85bfaa7b..856d7d2a 100644 --- a/src/main/generated/data/minecraft/item/golden_chestplate.json +++ b/src/main/generated/data/minecraft/item/golden_chestplate.json @@ -7,7 +7,7 @@ "toughness": 0.0 }, "minecraft:damageable": { - "durability": 240 + "durability": 112 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", "model": "minecraft:gold", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:repairable": { "items": "#minecraft:repairs_golden_armor" diff --git a/src/main/generated/data/minecraft/item/golden_helmet.json b/src/main/generated/data/minecraft/item/golden_helmet.json index 9b2cc674..d190cdbe 100644 --- a/src/main/generated/data/minecraft/item/golden_helmet.json +++ b/src/main/generated/data/minecraft/item/golden_helmet.json @@ -7,7 +7,7 @@ "toughness": 0.0 }, "minecraft:damageable": { - "durability": 165 + "durability": 77 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", "model": "minecraft:gold", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_golden_armor" diff --git a/src/main/generated/data/minecraft/item/golden_horse_armor.json b/src/main/generated/data/minecraft/item/golden_horse_armor.json index 2143838c..8040365a 100644 --- a/src/main/generated/data/minecraft/item/golden_horse_armor.json +++ b/src/main/generated/data/minecraft/item/golden_horse_armor.json @@ -6,10 +6,6 @@ "knockback_resistance": 0.0, "toughness": 0.0 }, - "minecraft:damageable": { - "break_sound": "minecraft:entity.item.break", - "durability": 240 - }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, @@ -17,8 +13,7 @@ "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_gold", "model": "minecraft:gold", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:stackable": 1 }, diff --git a/src/main/generated/data/minecraft/item/golden_leggings.json b/src/main/generated/data/minecraft/item/golden_leggings.json index e301db4c..a2edc42f 100644 --- a/src/main/generated/data/minecraft/item/golden_leggings.json +++ b/src/main/generated/data/minecraft/item/golden_leggings.json @@ -7,7 +7,7 @@ "toughness": 0.0 }, "minecraft:damageable": { - "durability": 225 + "durability": 105 }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_gold", "model": "minecraft:gold", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:repairable": { "items": "#minecraft:repairs_golden_armor" diff --git a/src/main/generated/data/minecraft/item/gray_carpet.json b/src/main/generated/data/minecraft/item/gray_carpet.json index d82047dd..b84930b6 100644 --- a/src/main/generated/data/minecraft/item/gray_carpet.json +++ b/src/main/generated/data/minecraft/item/gray_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:gray_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/green_carpet.json b/src/main/generated/data/minecraft/item/green_carpet.json index 8b8ad94d..99222190 100644 --- a/src/main/generated/data/minecraft/item/green_carpet.json +++ b/src/main/generated/data/minecraft/item/green_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:green_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/iron_boots.json b/src/main/generated/data/minecraft/item/iron_boots.json index 24bb9789..b65703bd 100644 --- a/src/main/generated/data/minecraft/item/iron_boots.json +++ b/src/main/generated/data/minecraft/item/iron_boots.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", "model": "minecraft:iron", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:repairable": { "items": "#minecraft:repairs_iron_armor" diff --git a/src/main/generated/data/minecraft/item/iron_chestplate.json b/src/main/generated/data/minecraft/item/iron_chestplate.json index d4efb819..5e71d118 100644 --- a/src/main/generated/data/minecraft/item/iron_chestplate.json +++ b/src/main/generated/data/minecraft/item/iron_chestplate.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", "model": "minecraft:iron", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:repairable": { "items": "#minecraft:repairs_iron_armor" diff --git a/src/main/generated/data/minecraft/item/iron_helmet.json b/src/main/generated/data/minecraft/item/iron_helmet.json index a99e035f..df7364f2 100644 --- a/src/main/generated/data/minecraft/item/iron_helmet.json +++ b/src/main/generated/data/minecraft/item/iron_helmet.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", "model": "minecraft:iron", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_iron_armor" diff --git a/src/main/generated/data/minecraft/item/iron_horse_armor.json b/src/main/generated/data/minecraft/item/iron_horse_armor.json index 42f6ecb7..56604c60 100644 --- a/src/main/generated/data/minecraft/item/iron_horse_armor.json +++ b/src/main/generated/data/minecraft/item/iron_horse_armor.json @@ -6,10 +6,6 @@ "knockback_resistance": 0.0, "toughness": 0.0 }, - "minecraft:damageable": { - "break_sound": "minecraft:entity.item.break", - "durability": 240 - }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, @@ -17,8 +13,7 @@ "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_iron", "model": "minecraft:iron", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:stackable": 1 }, diff --git a/src/main/generated/data/minecraft/item/iron_leggings.json b/src/main/generated/data/minecraft/item/iron_leggings.json index 43a1413a..5b92da67 100644 --- a/src/main/generated/data/minecraft/item/iron_leggings.json +++ b/src/main/generated/data/minecraft/item/iron_leggings.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_iron", "model": "minecraft:iron", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:repairable": { "items": "#minecraft:repairs_iron_armor" diff --git a/src/main/generated/data/minecraft/item/leather_boots.json b/src/main/generated/data/minecraft/item/leather_boots.json index e873baa8..cfa88544 100644 --- a/src/main/generated/data/minecraft/item/leather_boots.json +++ b/src/main/generated/data/minecraft/item/leather_boots.json @@ -21,8 +21,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", "model": "minecraft:leather", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:repairable": { "items": "#minecraft:repairs_leather_armor" diff --git a/src/main/generated/data/minecraft/item/leather_chestplate.json b/src/main/generated/data/minecraft/item/leather_chestplate.json index edc204bf..55f66efd 100644 --- a/src/main/generated/data/minecraft/item/leather_chestplate.json +++ b/src/main/generated/data/minecraft/item/leather_chestplate.json @@ -21,8 +21,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", "model": "minecraft:leather", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:repairable": { "items": "#minecraft:repairs_leather_armor" diff --git a/src/main/generated/data/minecraft/item/leather_helmet.json b/src/main/generated/data/minecraft/item/leather_helmet.json index 05c9ebce..dc52debf 100644 --- a/src/main/generated/data/minecraft/item/leather_helmet.json +++ b/src/main/generated/data/minecraft/item/leather_helmet.json @@ -21,8 +21,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", "model": "minecraft:leather", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_leather_armor" diff --git a/src/main/generated/data/minecraft/item/leather_horse_armor.json b/src/main/generated/data/minecraft/item/leather_horse_armor.json index d41513f3..08d51b89 100644 --- a/src/main/generated/data/minecraft/item/leather_horse_armor.json +++ b/src/main/generated/data/minecraft/item/leather_horse_armor.json @@ -6,10 +6,6 @@ "knockback_resistance": 0.0, "toughness": 0.0 }, - "minecraft:damageable": { - "break_sound": "minecraft:entity.item.break", - "durability": 80 - }, "minecraft:dispensable": { "behavior": "minecraft:equip_entity" }, @@ -20,8 +16,7 @@ "allowed_entities": "minecraft:horse", "equip_sound": "minecraft:item.armor.equip_leather", "model": "minecraft:leather", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/leather_leggings.json b/src/main/generated/data/minecraft/item/leather_leggings.json index 2a10f8c1..88e64f50 100644 --- a/src/main/generated/data/minecraft/item/leather_leggings.json +++ b/src/main/generated/data/minecraft/item/leather_leggings.json @@ -21,8 +21,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_leather", "model": "minecraft:leather", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:repairable": { "items": "#minecraft:repairs_leather_armor" diff --git a/src/main/generated/data/minecraft/item/light_blue_carpet.json b/src/main/generated/data/minecraft/item/light_blue_carpet.json index 0a0c47c0..de889154 100644 --- a/src/main/generated/data/minecraft/item/light_blue_carpet.json +++ b/src/main/generated/data/minecraft/item/light_blue_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:light_blue_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/light_gray_carpet.json b/src/main/generated/data/minecraft/item/light_gray_carpet.json index f2f6eece..07456b21 100644 --- a/src/main/generated/data/minecraft/item/light_gray_carpet.json +++ b/src/main/generated/data/minecraft/item/light_gray_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:light_gray_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/lime_carpet.json b/src/main/generated/data/minecraft/item/lime_carpet.json index 157f7674..4ddc9073 100644 --- a/src/main/generated/data/minecraft/item/lime_carpet.json +++ b/src/main/generated/data/minecraft/item/lime_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:lime_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/magenta_carpet.json b/src/main/generated/data/minecraft/item/magenta_carpet.json index 8474f2ec..255d65a3 100644 --- a/src/main/generated/data/minecraft/item/magenta_carpet.json +++ b/src/main/generated/data/minecraft/item/magenta_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:magenta_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/netherite_boots.json b/src/main/generated/data/minecraft/item/netherite_boots.json index e176cc6a..3eb0575a 100644 --- a/src/main/generated/data/minecraft/item/netherite_boots.json +++ b/src/main/generated/data/minecraft/item/netherite_boots.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", "model": "minecraft:netherite", - "slot": "feet", - "swappable": true + "slot": "feet" }, "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" diff --git a/src/main/generated/data/minecraft/item/netherite_chestplate.json b/src/main/generated/data/minecraft/item/netherite_chestplate.json index 7da8c3ad..9e3c73c6 100644 --- a/src/main/generated/data/minecraft/item/netherite_chestplate.json +++ b/src/main/generated/data/minecraft/item/netherite_chestplate.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", "model": "minecraft:netherite", - "slot": "chest", - "swappable": true + "slot": "chest" }, "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" diff --git a/src/main/generated/data/minecraft/item/netherite_helmet.json b/src/main/generated/data/minecraft/item/netherite_helmet.json index bb461f2b..c45eab7f 100644 --- a/src/main/generated/data/minecraft/item/netherite_helmet.json +++ b/src/main/generated/data/minecraft/item/netherite_helmet.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", "model": "minecraft:netherite", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" diff --git a/src/main/generated/data/minecraft/item/netherite_leggings.json b/src/main/generated/data/minecraft/item/netherite_leggings.json index 7df30825..f869ffd3 100644 --- a/src/main/generated/data/minecraft/item/netherite_leggings.json +++ b/src/main/generated/data/minecraft/item/netherite_leggings.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_netherite", "model": "minecraft:netherite", - "slot": "legs", - "swappable": true + "slot": "legs" }, "minecraft:immune_to_damage": { "damage": "minecraft:is_fire" diff --git a/src/main/generated/data/minecraft/item/orange_carpet.json b/src/main/generated/data/minecraft/item/orange_carpet.json index b12c60f7..8694f717 100644 --- a/src/main/generated/data/minecraft/item/orange_carpet.json +++ b/src/main/generated/data/minecraft/item/orange_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:orange_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/pink_carpet.json b/src/main/generated/data/minecraft/item/pink_carpet.json index a3319a3a..a97536e7 100644 --- a/src/main/generated/data/minecraft/item/pink_carpet.json +++ b/src/main/generated/data/minecraft/item/pink_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:pink_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/purple_carpet.json b/src/main/generated/data/minecraft/item/purple_carpet.json index 3a84ffb5..07bc071d 100644 --- a/src/main/generated/data/minecraft/item/purple_carpet.json +++ b/src/main/generated/data/minecraft/item/purple_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:purple_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/red_carpet.json b/src/main/generated/data/minecraft/item/red_carpet.json index 56010196..66251998 100644 --- a/src/main/generated/data/minecraft/item/red_carpet.json +++ b/src/main/generated/data/minecraft/item/red_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:red_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/shield.json b/src/main/generated/data/minecraft/item/shield.json index 90d055b5..7ead730e 100644 --- a/src/main/generated/data/minecraft/item/shield.json +++ b/src/main/generated/data/minecraft/item/shield.json @@ -8,7 +8,8 @@ "behavior": "minecraft:equip_entity" }, "minecraft:equipment": { - "slot": "offhand" + "slot": "offhand", + "swappable": false }, "minecraft:repairable": { "items": "#minecraft:wooden_tool_materials" diff --git a/src/main/generated/data/minecraft/item/totem_of_undying.json b/src/main/generated/data/minecraft/item/totem_of_undying.json index 8fbc1d5c..dbccf3b3 100644 --- a/src/main/generated/data/minecraft/item/totem_of_undying.json +++ b/src/main/generated/data/minecraft/item/totem_of_undying.json @@ -1,31 +1,37 @@ { "behavior": { - "minecraft:life_saving": { - "effects": [ - { - "id": "minecraft:regeneration", - "amplifier": 1, - "duration": 900, - "show_icon": true - }, - { - "id": "minecraft:absorption", - "amplifier": 1, - "duration": 100, - "show_icon": true - }, - { - "id": "minecraft:fire_resistance", - "duration": 800, - "show_icon": true - } - ] - }, "minecraft:stackable": 1 }, "display": { "model": "minecraft:totem_of_undying", "rarity": "uncommon", "translation_key": "item.minecraft.totem_of_undying" + }, + "events": { + "minecraft:before_death_holder": { + "action": { + "type": "minecraft:add_status_effects", + "effects": [ + { + "id": "minecraft:regeneration", + "amplifier": 1, + "duration": 900, + "show_icon": true + }, + { + "id": "minecraft:absorption", + "amplifier": 1, + "duration": 100, + "show_icon": true + }, + { + "id": "minecraft:fire_resistance", + "duration": 800, + "show_icon": true + } + ], + "entity": "this" + } + } } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/turtle_helmet.json b/src/main/generated/data/minecraft/item/turtle_helmet.json index 64fb99f7..d42b3416 100644 --- a/src/main/generated/data/minecraft/item/turtle_helmet.json +++ b/src/main/generated/data/minecraft/item/turtle_helmet.json @@ -18,8 +18,7 @@ "minecraft:equipment": { "equip_sound": "minecraft:item.armor.equip_turtle", "model": "minecraft:turtle_scute", - "slot": "head", - "swappable": true + "slot": "head" }, "minecraft:repairable": { "items": "#minecraft:repairs_turtle_armor" diff --git a/src/main/generated/data/minecraft/item/white_carpet.json b/src/main/generated/data/minecraft/item/white_carpet.json index bdead375..77d0e754 100644 --- a/src/main/generated/data/minecraft/item/white_carpet.json +++ b/src/main/generated/data/minecraft/item/white_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:white_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/generated/data/minecraft/item/wolf_armor.json b/src/main/generated/data/minecraft/item/wolf_armor.json index 1e4088f9..1d1f5089 100644 --- a/src/main/generated/data/minecraft/item/wolf_armor.json +++ b/src/main/generated/data/minecraft/item/wolf_armor.json @@ -7,7 +7,6 @@ "toughness": 0.0 }, "minecraft:damageable": { - "break_sound": "minecraft:item.wolf_armor.break", "durability": 64 }, "minecraft:dyeable": { @@ -17,8 +16,7 @@ "allowed_entities": "minecraft:wolf", "equip_sound": "minecraft:item.armor.equip_wolf", "model": "minecraft:armadillo_scute", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:stackable": 1, "minecraft:tinted": { diff --git a/src/main/generated/data/minecraft/item/yellow_carpet.json b/src/main/generated/data/minecraft/item/yellow_carpet.json index 2871673d..e25fbc25 100644 --- a/src/main/generated/data/minecraft/item/yellow_carpet.json +++ b/src/main/generated/data/minecraft/item/yellow_carpet.json @@ -13,8 +13,7 @@ ], "equip_sound": "minecraft:entity.llama.swag", "model": "minecraft:yellow_carpet", - "slot": "body", - "swappable": true + "slot": "body" }, "minecraft:fuel": { "ticks": 67 diff --git a/src/main/java/net/errorcraft/itematic/access/entity/vehicle/BoatEntityTypeAccess.java b/src/main/java/net/errorcraft/itematic/access/entity/vehicle/BoatEntityTypeAccess.java deleted file mode 100644 index 098e5dcd..00000000 --- a/src/main/java/net/errorcraft/itematic/access/entity/vehicle/BoatEntityTypeAccess.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.errorcraft.itematic.access.entity.vehicle; - -import net.minecraft.item.Item; -import net.minecraft.registry.RegistryKey; - -public interface BoatEntityTypeAccess { - RegistryKey itematic$materialItemKey(); -} diff --git a/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java b/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java index 91560824..817f42c7 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/ItemAccess.java @@ -36,6 +36,9 @@ public interface ItemAccess { default boolean itematic$invokeEvent(ItemEvent event, ActionContext context) { return false; } + default boolean itematic$hasEventListener(ItemEvent event) { + return false; + } default boolean itematic$mayStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { return true; } diff --git a/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java b/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java index f9543ed1..acf767be 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/ItemStackAccess.java @@ -5,7 +5,7 @@ import net.errorcraft.itematic.item.event.ItemEvent; import net.errorcraft.itematic.world.action.context.ActionContext; import net.minecraft.block.BlockState; -import net.minecraft.component.ComponentMapImpl; +import net.minecraft.component.MergedComponentMap; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -21,7 +21,7 @@ public interface ItemStackAccess { default RegistryKey itematic$key() { return null; } - default void itematic$setComponents(ComponentMapImpl components) {} + default void itematic$setComponents(MergedComponentMap components) {} default void itematic$tryIncrement(int count) {} default int itematic$tryDecrement(int amount) { return 0; @@ -48,10 +48,10 @@ public interface ItemStackAccess { default boolean itematic$invokeEvent(ItemEvent event, ActionContext context) { return false; } - default boolean itematic$canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { + default boolean itematic$hasEventListener(ItemEvent event) { return false; } - default boolean itematic$isNetworkSynced() { + default boolean itematic$canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { return false; } default boolean itematic$mayStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { diff --git a/src/main/java/net/errorcraft/itematic/access/loot/ContainerComponentModifierAccess.java b/src/main/java/net/errorcraft/itematic/access/loot/ContainerComponentModifierAccess.java index 0ac7a674..2cc40293 100644 --- a/src/main/java/net/errorcraft/itematic/access/loot/ContainerComponentModifierAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/loot/ContainerComponentModifierAccess.java @@ -5,5 +5,5 @@ import java.util.stream.Stream; public interface ContainerComponentModifierAccess { - T itematic$create(ItemStack stack, T component, Stream newContents); + T itematic$apply(ItemStack stack, T component, Stream newContents); } diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index 1773d110..d9725ed4 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -7531,7 +7531,7 @@ private void bootstrapArmor() { this.registerable.register(ItemKeys.WOLF_ARMOR, create( ItemDisplay.Builder.forItem(ItemKeys.WOLF_ARMOR).build(), ItemComponentSet.builder() - .with(ArmorItemComponent.from(ArmorMaterials.ARMADILLO_SCUTE, EquipmentType.BODY, AnimalArmorItem.Type.CANINE)) + .with(ArmorItemComponent.fromDamageable(ArmorMaterials.ARMADILLO_SCUTE, EquipmentType.BODY, AnimalArmorItem.Type.CANINE)) .with(DyeableItemComponent.of(0x000000)) .with(TintedItemComponent.of(DyeableItemColor.of(1))) .build() @@ -10811,10 +10811,14 @@ private void bootstrapMiscellaneous() { .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(LifeSavingItemComponent.of( - new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.REGENERATION), 900, 1), - new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.ABSORPTION), 100, 1), - new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.FIRE_RESISTANCE), 800, 0) + .build(), + ItemEventMap.builder() + .add(ItemEvents.BEFORE_DEATH_HOLDER, ActionEntry.of( + AddStatusEffectsAction.of( + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.REGENERATION), 900, 1), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.ABSORPTION), 100, 1), + new StatusEffectInstance(this.statusEffects.getOrThrow(StatusEffectKeys.FIRE_RESISTANCE), 800, 0) + ) )) .build() )); diff --git a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java index d3121ff0..9577c850 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/item/component/ItemComponentTypes.java @@ -53,7 +53,6 @@ public class ItemComponentTypes { public static final ItemComponentType ZOOM = register("zoom", new ItemComponentType<>(ZoomItemComponent.CODEC)); public static final ItemComponentType ITEM_HOLDER = register("item_holder", new ItemComponentType<>(ItemHolderItemComponent.CODEC)); public static final ItemComponentType IMMUNE_TO_DAMAGE = register("immune_to_damage", new ItemComponentType<>(ImmuneToDamageItemComponent.CODEC)); - public static final ItemComponentType LIFE_SAVING = register("life_saving", new ItemComponentType<>(LifeSavingItemComponent.CODEC)); public static final ItemComponentType UNLOCK_RECIPES = register("unlock_recipes", new ItemComponentType<>(UnlockRecipesItemComponent.CODEC)); public static final ItemComponentType DEBUG_STICK = register("debug_stick", new ItemComponentType<>(DebugStickItemComponent.CODEC)); public static final ItemComponentType SUSPICIOUS_EFFECT_INGREDIENT = register("suspicious_effect_ingredient", new ItemComponentType<>(SuspiciousEffectIngredientItemComponent.CODEC)); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java index 9f548438..68eb8dc6 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java @@ -9,6 +9,7 @@ import net.errorcraft.itematic.serialization.ItematicCodecs; import net.minecraft.component.type.AttributeModifierSlot; import net.minecraft.component.type.AttributeModifiersComponent; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.AnimalArmorItem; @@ -17,8 +18,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.dynamic.Codecs; -import java.util.Optional; - public record ArmorItemComponent(int defense, double toughness, double knockbackResistance, Identifier attributeId) implements ItemComponent { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Codecs.NON_NEGATIVE_INT.fieldOf("defense").forGetter(ArmorItemComponent::defense), @@ -37,17 +36,26 @@ public static ArmorItemComponent of(ArmorMaterial material, EquipmentType type) } public static ItemComponent[] from(ArmorMaterial material, EquipmentType type) { - return from(material, type, null); + return new ItemComponent[] { + StackableItemComponent.of(1), + DamageableItemComponent.of(type.getMaxDamage(material.durability())), + EquipmentItemComponent.of(material, type), + of(material, type) + }; } public static ItemComponent[] from(ArmorMaterial material, EquipmentType type, AnimalArmorItem.Type animalType) { - int durability = type.getMaxDamage(material.durability()); return new ItemComponent[] { StackableItemComponent.of(1), - Optional.ofNullable(animalType) - .map(AnimalArmorItem.Type::itematic$breakSound) - .map(breakSound -> DamageableItemComponent.of(durability, breakSound)) - .orElseGet(() -> DamageableItemComponent.of(durability)), + EquipmentItemComponent.of(material, type, animalType), + of(material, type) + }; + } + + public static ItemComponent[] fromDamageable(ArmorMaterial material, EquipmentType type, AnimalArmorItem.Type animalType) { + return new ItemComponent[] { + StackableItemComponent.of(1), + DamageableItemComponent.of(type.getMaxDamage(material.durability())), EquipmentItemComponent.of(material, type, animalType), of(material, type) }; @@ -66,7 +74,8 @@ public Codec codec() { @Override public void addAttributeModifiers(AttributeModifiersComponent.Builder builder, ItemComponentSet components) { AttributeModifierSlot slot = components.get(ItemComponentTypes.EQUIPMENT) - .map(EquipmentItemComponent::slot) + .map(EquipmentItemComponent::equippable) + .map(EquippableComponent::slot) .map(AttributeModifierSlot::forEquipmentSlot) .orElse(AttributeModifierSlot.ARMOR); builder.add( diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java index 85be71e9..5a12028c 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/BlockItemComponent.java @@ -12,7 +12,7 @@ import net.errorcraft.itematic.item.placement.block.picker.pickers.AttachedToSideBlockPicker; import net.errorcraft.itematic.item.placement.block.picker.pickers.SimpleBlockPicker; import net.errorcraft.itematic.mixin.item.ItemAccessor; -import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.block.Block; import net.minecraft.block.ShulkerBoxBlock; import net.minecraft.component.ComponentMap; @@ -42,7 +42,7 @@ public record BlockItemComponent(BlockPicker block, boolean operatorOnly, Set public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( BlockPicker.CODEC.fieldOf("block").forGetter(BlockItemComponent::block), Codec.BOOL.optionalFieldOf("operator_only", false).forGetter(BlockItemComponent::operatorOnly), - ItematicCodecs.setCodec(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(BlockItemComponent::passes) + SetCodec.forEnum(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(BlockItemComponent::passes) ).apply(instance, BlockItemComponent::new)); public static BlockItemComponent of(BlockPicker block, boolean operatorOnly, Set passes) { diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java index 69623912..69c3371c 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java @@ -17,6 +17,7 @@ import net.errorcraft.itematic.mixin.item.ItemAccessor; import net.errorcraft.itematic.mixin.item.SpawnEggItemAccessor; import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.NbtComponent; import net.minecraft.entity.EntityType; @@ -46,7 +47,7 @@ public record EntityItemComponent(EntityInitializer entity, boolean allowItem public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( EntityInitializer.CODEC.fieldOf("entity").forGetter(EntityItemComponent::entity), Codec.BOOL.optionalFieldOf("allow_item_data", false).forGetter(EntityItemComponent::allowItemData), - ItematicCodecs.setCodec(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(EntityItemComponent::passes) + SetCodec.forEnum(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(EntityItemComponent::passes) ).apply(instance, EntityItemComponent::new)); private static final MapCodec> ENTITY_TYPE_MAP_CODEC = SpawnEggItemAccessor.entityTypeMapCodec(); private static final Text RANDOM_TEXT = DecorationItemAccessor.randomText(); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java index ae042303..57846fa9 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java @@ -1,7 +1,6 @@ package net.errorcraft.itematic.item.component.components; import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemStackConsumer; import net.errorcraft.itematic.item.component.ItemComponent; @@ -17,87 +16,63 @@ import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.EquippableComponent; import net.minecraft.component.type.FireworkExplosionComponent; -import net.minecraft.entity.EntityType; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.AnimalArmorItem; import net.minecraft.item.ItemStack; import net.minecraft.item.equipment.ArmorMaterial; import net.minecraft.item.equipment.EquipmentType; -import net.minecraft.registry.RegistryCodecs; import net.minecraft.registry.RegistryEntryLookup; -import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryEntryList; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; -import net.minecraft.sound.SoundEvents; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; - -import java.util.Optional; - -public record EquipmentItemComponent(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound, Optional model, Optional>> allowedEntities) implements ItemComponent { - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - EquipmentSlot.CODEC.fieldOf("slot").forGetter(EquipmentItemComponent::slot), - Codec.BOOL.optionalFieldOf("swappable", false).forGetter(EquipmentItemComponent::swappable), - SoundEvent.ENTRY_CODEC.optionalFieldOf("equip_sound", SoundEvents.ITEM_ARMOR_EQUIP_GENERIC).forGetter(EquipmentItemComponent::equipSound), - Identifier.CODEC.optionalFieldOf("model").forGetter(EquipmentItemComponent::model), - RegistryCodecs.entryList(RegistryKeys.ENTITY_TYPE).optionalFieldOf("allowed_entities").forGetter(EquipmentItemComponent::allowedEntities) - ).apply(instance, EquipmentItemComponent::new)); - - public static EquipmentItemComponent of(ArmorMaterial material, EquipmentType type, @Nullable AnimalArmorItem.Type animalType) { - return new EquipmentItemComponent( - type.getEquipmentSlot(), - true, - material.equipSound(), - Optional.of(material.modelId()), - Optional.ofNullable(animalType).map(AnimalArmorItem.Type::itematic$allowedEntities) - ); + +public record EquipmentItemComponent(EquippableComponent equippable) implements ItemComponent { + public static final Codec CODEC = EquippableComponent.CODEC.xmap(EquipmentItemComponent::new, EquipmentItemComponent::equippable); + + public static EquipmentItemComponent of(ArmorMaterial material, EquipmentType type) { + return new EquipmentItemComponent(EquippableComponent.builder(type.getEquipmentSlot()) + .swappable(true) + .equipSound(material.equipSound()) + .model(material.modelId()) + .build()); + } + + public static EquipmentItemComponent of(ArmorMaterial material, EquipmentType type, AnimalArmorItem.Type animalType) { + return new EquipmentItemComponent(EquippableComponent.builder(type.getEquipmentSlot()) + .swappable(true) + .equipSound(material.equipSound()) + .model(material.modelId()) + .allowedEntities(animalType.itematic$allowedEntities()) + .build()); } public static EquipmentItemComponent of(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound) { - return new EquipmentItemComponent( - slot, - swappable, - equipSound, - Optional.empty(), - Optional.empty() - ); + return new EquipmentItemComponent(EquippableComponent.builder(slot) + .swappable(swappable) + .equipSound(equipSound) + .build()); } public static EquipmentItemComponent of(EquipmentSlot slot, boolean swappable, RegistryEntry equipSound, Identifier model) { - return new EquipmentItemComponent( - slot, - swappable, - equipSound, - Optional.of(model), - Optional.empty() - ); + return new EquipmentItemComponent(EquippableComponent.builder(slot) + .swappable(swappable) + .equipSound(equipSound) + .model(model) + .build()); } public static EquipmentItemComponent of(EquippableComponent equippable) { - return new EquipmentItemComponent( - equippable.slot(), - true, - equippable.equipSound(), - equippable.model(), - equippable.allowedEntities() - ); + return new EquipmentItemComponent(equippable); } public static EquipmentItemComponent ofStatic(EquipmentSlot slot) { - return new EquipmentItemComponent( - slot, - false, - SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, - Optional.empty(), - Optional.empty() - ); + return new EquipmentItemComponent(EquippableComponent.builder(slot).build()); } public static ItemComponent[] skull(RegistryEntry attachedBlock, RegistryEntry otherBlock, RegistryEntryLookup dispenseBehaviors) { @@ -121,12 +96,12 @@ public Codec codec() { @Override public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack, ItemStackConsumer resultStackConsumer) { - if (!this.swappable) { + EquippableComponent equippable = stack.get(DataComponentTypes.EQUIPPABLE); + if (equippable == null) { return ItemResult.PASS; } - EquippableComponent equippable = stack.get(DataComponentTypes.EQUIPPABLE); - if (equippable == null) { + if (!equippable.swappable()) { return ItemResult.PASS; } @@ -151,6 +126,6 @@ public ItemResult use(World world, PlayerEntity user, Hand hand, ItemStack stack @Override public void addComponents(ComponentMap.Builder builder) { - builder.add(DataComponentTypes.EQUIPPABLE, new EquippableComponent(this.slot, this.equipSound, this.model, this.allowedEntities, false)); + builder.add(DataComponentTypes.EQUIPPABLE, this.equippable); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java index dac57c02..18945db4 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java @@ -200,7 +200,7 @@ private void add(BundleContentsComponent.Builder bundleContentsBuilder, Slot slo } private void remove(Entity user, BundleContentsComponent.Builder bundleContentsBuilder, Consumer onRemoved) { - ItemStack removedStack = bundleContentsBuilder.removeFirst(); + ItemStack removedStack = bundleContentsBuilder.removeSelected(); if (removedStack == null) { return; } @@ -215,7 +215,7 @@ private void removeAndDrop(ItemStack stack, PlayerEntity player) { return; } - ItemStack removedStack = newBuilder.removeFirst(); + ItemStack removedStack = newBuilder.removeSelected(); if (removedStack == null) { return; } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/LifeSavingItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/LifeSavingItemComponent.java deleted file mode 100644 index 00f7f35c..00000000 --- a/src/main/java/net/errorcraft/itematic/item/component/components/LifeSavingItemComponent.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.errorcraft.itematic.item.component.components; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.item.component.ItemComponent; -import net.errorcraft.itematic.item.component.ItemComponentType; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; - -import java.util.List; - -public record LifeSavingItemComponent(List effects) implements ItemComponent { - public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - StatusEffectInstance.CODEC.listOf().fieldOf("effects").forGetter(LifeSavingItemComponent::effects) - ).apply(instance, LifeSavingItemComponent::new)); - - @Override - public ItemComponentType type() { - return ItemComponentTypes.LIFE_SAVING; - } - - @Override - public Codec codec() { - return CODEC; - } - - public void apply(LivingEntity target) { - for (StatusEffectInstance effect : this.effects) { - target.addStatusEffect(new StatusEffectInstance(effect)); - } - } - - public static LifeSavingItemComponent of(StatusEffectInstance... effects) { - return new LifeSavingItemComponent(List.of(effects)); - } -} diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/MapHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/MapHolderItemComponent.java index 2fd2eb62..b31cd038 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/MapHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/MapHolderItemComponent.java @@ -9,12 +9,10 @@ import net.minecraft.component.type.MapColorComponent; import net.minecraft.component.type.MapDecorationsComponent; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.FilledMapItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.network.packet.Packet; import net.minecraft.text.Text; import net.minecraft.world.World; @@ -55,8 +53,4 @@ public void onCraft(ItemStack stack, World world) { public void appendTooltip(ItemStack stack, Item.TooltipContext context, List tooltip, TooltipType type) { DUMMY.appendTooltip(stack, context, tooltip, type); } - - public Packet createSyncPacket(ItemStack stack, World world, PlayerEntity player) { - return DUMMY.createSyncPacket(stack, world, player); - } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java index 4da95c09..7d9d5b45 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/UseableItemComponent.java @@ -12,7 +12,7 @@ import net.errorcraft.itematic.item.use.provider.IntegerProvider; import net.errorcraft.itematic.item.use.provider.providers.ConstantIntegerProvider; import net.errorcraft.itematic.item.use.provider.providers.IndefiniteIntegerProvider; -import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.UseRemainderComponent; @@ -35,7 +35,7 @@ public record UseableItemComponent(Optional ticks, Use UseDurationDataComponent.CODEC.optionalFieldOf("ticks").forGetter(UseableItemComponent::ticks), UseAction.CODEC.optionalFieldOf("animation", UseAction.NONE).forGetter(UseableItemComponent::animation), ItemStack.CODEC.optionalFieldOf("remainder").forGetter(UseableItemComponent::remainder), - ItematicCodecs.setCodec(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(UseableItemComponent::passes) + SetCodec.forEnum(Pass.CODEC).optionalFieldOf("passes", Pass.DEFAULT_PASSES).forGetter(UseableItemComponent::passes) ).apply(instance, UseableItemComponent::new)); public static Builder builder() { diff --git a/src/main/java/net/errorcraft/itematic/item/event/ItemEventKeys.java b/src/main/java/net/errorcraft/itematic/item/event/ItemEventKeys.java index c28fd3e3..dd51574d 100644 --- a/src/main/java/net/errorcraft/itematic/item/event/ItemEventKeys.java +++ b/src/main/java/net/errorcraft/itematic/item/event/ItemEventKeys.java @@ -22,6 +22,7 @@ public class ItemEventKeys { public static final RegistryKey EQUIP_ITEM = of("equip_item"); public static final RegistryKey CONSUME_ITEM = of("consume_item"); public static final RegistryKey THROW_PROJECTILE = of("throw_projectile"); + public static final RegistryKey BEFORE_DEATH_HOLDER = of("before_death_holder"); private ItemEventKeys() {} diff --git a/src/main/java/net/errorcraft/itematic/item/event/ItemEventMap.java b/src/main/java/net/errorcraft/itematic/item/event/ItemEventMap.java index b3e74424..d61df5ad 100644 --- a/src/main/java/net/errorcraft/itematic/item/event/ItemEventMap.java +++ b/src/main/java/net/errorcraft/itematic/item/event/ItemEventMap.java @@ -12,7 +12,7 @@ public class ItemEventMap { public static final ItemEventMap EMPTY = new ItemEventMap(); public static final Codec CODEC = Codec.simpleMap(ItematicRegistries.ITEM_EVENT.getCodec(), ActionEntry.REGISTRY_CODEC, ItematicRegistries.ITEM_EVENT) - .xmap(ItemEventMap::new, v -> v.events) + .xmap(ItemEventMap::new, map -> map.events) .codec(); private final Map> events; @@ -34,11 +34,16 @@ public boolean invokeEvent(ItemEvent event, ActionContext context) { if (entry == null) { return false; } + return entry.value() .execute(context) .orElse(false); } + public boolean hasListener(ItemEvent event) { + return this.events.containsKey(event); + } + public static class Builder { private final Map> events = new HashMap<>(); @@ -54,6 +59,7 @@ public Builder add(ItemEvent event, RegistryEntry entry) { if (this.events.containsKey(event)) { throw new IllegalArgumentException("Duplicate entry for item event " + event); } + this.events.put(event, entry); return this; } diff --git a/src/main/java/net/errorcraft/itematic/item/event/ItemEvents.java b/src/main/java/net/errorcraft/itematic/item/event/ItemEvents.java index 6582f5db..19d87e15 100644 --- a/src/main/java/net/errorcraft/itematic/item/event/ItemEvents.java +++ b/src/main/java/net/errorcraft/itematic/item/event/ItemEvents.java @@ -22,6 +22,7 @@ public class ItemEvents { public static final ItemEvent EQUIP_ITEM = register(ItemEventKeys.EQUIP_ITEM); public static final ItemEvent CONSUME_ITEM = register(ItemEventKeys.CONSUME_ITEM); public static final ItemEvent THROW_PROJECTILE = register(ItemEventKeys.THROW_PROJECTILE); + public static final ItemEvent BEFORE_DEATH_HOLDER = register(ItemEventKeys.BEFORE_DEATH_HOLDER); private ItemEvents() {} diff --git a/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java b/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java index 61267334..7bcd7432 100644 --- a/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java +++ b/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java @@ -3,7 +3,7 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.loot.context.ItematicLootContextParameters; -import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.condition.LootConditionType; import net.minecraft.loot.context.LootContext; @@ -13,7 +13,7 @@ public record SideCheckPredicate(Set sides) implements LootCondition { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - ItematicCodecs.setCodec(Direction.CODEC).fieldOf("sides").forGetter(SideCheckPredicate::sides) + SetCodec.forEnum(Direction.CODEC).fieldOf("sides").forGetter(SideCheckPredicate::sides) ).apply(instance, SideCheckPredicate::new)); @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/dispenser/ShearsDispenserBehaviorAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/block/dispenser/ShearsDispenserBehaviorAccessor.java index 4a1b27c9..bb2c2f76 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/dispenser/ShearsDispenserBehaviorAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/dispenser/ShearsDispenserBehaviorAccessor.java @@ -1,6 +1,7 @@ package net.errorcraft.itematic.mixin.block.dispenser; import net.minecraft.block.dispenser.ShearsDispenserBehavior; +import net.minecraft.item.ItemStack; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import org.spongepowered.asm.mixin.Mixin; @@ -14,7 +15,7 @@ static boolean tryShearBlock(ServerWorld world, BlockPos pos) { } @Invoker("tryShearEntity") - static boolean tryShearEntity(ServerWorld world, BlockPos pos) { + static boolean tryShearEntity(ServerWorld world, BlockPos pos, ItemStack shears) { throw new AssertionError(); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java index ff551647..cd54b759 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/BrewingStandBlockEntityExtender.java @@ -22,18 +22,6 @@ @Mixin(BrewingStandBlockEntity.class) public class BrewingStandBlockEntityExtender { - @Redirect( - method = "isValid", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private boolean isOfForBlazePowderUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BLAZE_POWDER); - } - @Redirect( method = "isValid", at = @At( @@ -109,18 +97,6 @@ private static ItemStack craftUseDynamicRegistryManager(BrewingRecipeRegistry in return instance.itematic$craft(ingredient, input, world); } - @Redirect( - method = "tick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private static boolean isOfForBlazePowderUseRegistryKeyCheckStatic(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BLAZE_POWDER); - } - @Inject( method = "craft", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java index 648ce237..4338e0eb 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/block/entity/LecternBlockEntityExtender.java @@ -2,44 +2,38 @@ import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.block.entity.LecternBlockEntity; -import net.minecraft.item.Item; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(LecternBlockEntity.class) public class LecternBlockEntityExtender { - @Redirect( + @Shadow + ItemStack book; + + @Inject( method = "hasBook", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); + private void checkPresenceWritableAndTextHolderBehavior(CallbackInfoReturnable info) { + if (!this.book.itematic$hasBehavior(ItemComponentTypes.WRITABLE) && !this.book.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER)) { + info.setReturnValue(false); + } } - @Redirect( - method = { "hasBook", "resolveBook" }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;WRITTEN_BOOK:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) + @Inject( + method = "resolveBook", + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForWrittenBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); + private void checkPresenceTextHolderBehavior(ItemStack book, PlayerEntity player, CallbackInfoReturnable info) { + if (!book.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER)) { + info.setReturnValue(book); + } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java index dd4abe19..3c8d4e18 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/BundleContentsComponentExtender.java @@ -106,7 +106,11 @@ private void checkCanOccupy(ItemStack stack, CallbackInfoReturnable inf } @Redirect( - method = { "getMaxAllowed", "add(Lnet/minecraft/item/ItemStack;)I", "removeFirst" }, + method = { + "getMaxAllowed", + "add(Lnet/minecraft/item/ItemStack;)I", + "removeSelected" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/component/type/BundleContentsComponent;getOccupancy(Lnet/minecraft/item/ItemStack;)Lorg/apache/commons/lang3/math/Fraction;" @@ -131,11 +135,12 @@ private boolean checkFromDataComponent(ItemStack stack) { method = "add(Lnet/minecraft/item/ItemStack;)I", at = @At( value = "INVOKE", - target = "Lnet/minecraft/component/type/BundleContentsComponent$Builder;addInternal(Lnet/minecraft/item/ItemStack;)I" + target = "Lnet/minecraft/component/type/BundleContentsComponent$Builder;getInsertionIndex(Lnet/minecraft/item/ItemStack;)I" ), cancellable = true ) private void splitOverMultipleItemStacks(ItemStack stack, CallbackInfoReturnable info, @Local int countToAdd) { + // The assumption that an overflowing item stack doesn't fit no longer applies due to data-driven occupancies info.setReturnValue(countToAdd); for (ItemStack heldStack : this.stacks) { if (!ItemStack.areItemsAndComponentsEqual(heldStack, stack)) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java b/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java index 048c8fec..fb86a0c6 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/component/type/EquippableComponentExtender.java @@ -5,12 +5,33 @@ import net.minecraft.item.ItemStack; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(EquippableComponent.class) public class EquippableComponentExtender { + @Shadow + @Final + @Mutable + private boolean dispensable; + + @Redirect( + method = "", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/component/type/EquippableComponent;dispensable:Z", + opcode = Opcodes.PUTFIELD + ) + ) + private void doNotUseDispensableField(EquippableComponent instance, boolean value) { + this.dispensable = true; + } + @Redirect( method = "equip", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ItemEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ItemEntityExtender.java index a5c8fcdb..33e3d87c 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ItemEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ItemEntityExtender.java @@ -12,17 +12,6 @@ @Mixin(ItemEntity.class) public abstract class ItemEntityExtender { - @Redirect( - method = "damage", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForNetherStarReturnFalse(ItemStack instance, Item item) { - return false; - } - @Redirect( method = "onPlayerCollision", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java index b0d837ce..21c81a69 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java @@ -2,9 +2,9 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.access.entity.LivingEntityAccess; import net.errorcraft.itematic.access.entity.attribute.AttributeContainerAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; @@ -12,8 +12,11 @@ import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.ConsumableItemComponent; -import net.errorcraft.itematic.item.component.components.LifeSavingItemComponent; +import net.errorcraft.itematic.item.event.ItemEvents; +import net.errorcraft.itematic.world.action.context.ActionContext; +import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.minecraft.component.ComponentType; +import net.minecraft.component.type.DeathProtectionComponent; import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -22,15 +25,14 @@ import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.ItemTags; +import net.minecraft.server.world.ServerWorld; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; import net.minecraft.util.Hand; @@ -48,7 +50,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Optional; import java.util.function.Predicate; @Mixin(LivingEntity.class) @@ -204,20 +205,23 @@ private boolean isOfForPiglinHeadUseRegistryKeyCheck(ItemStack instance, Item it } @Redirect( - method = "tryUseTotem", + method = "tryUseDeathProtector", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" ) ) - private boolean isOfForTotemOfUndyingUseItemComponent(ItemStack instance, Item item, @Share("lifeSavingItemComponent") LocalRef lifeSavingItemComponent) { - Optional optionalComponent = instance.itematic$getBehavior(ItemComponentTypes.LIFE_SAVING); - optionalComponent.ifPresent(lifeSavingItemComponent::set); - return optionalComponent.isPresent(); + @SuppressWarnings("unchecked") + private T getDeathProtectionDataComponentUseEventListenerCheck(ItemStack instance, ComponentType type) { + if (instance.itematic$hasEventListener(ItemEvents.BEFORE_DEATH_HOLDER)) { + return (T) DeathProtectionComponent.TOTEM_OF_UNDYING; + } + + return null; } @Redirect( - method = "tryUseTotem", + method = "tryUseDeathProtector", at = @At( value = "INVOKE", target = "Lnet/minecraft/stat/StatType;getOrCreateStat(Ljava/lang/Object;)Lnet/minecraft/stat/Stat;" @@ -227,27 +231,23 @@ private Stat getOrCreateStatUseRegistryEntry(StatType instance, return instance.itematic$getOrCreateStat(stack.getRegistryEntry()); } - @Inject( - method = "tryUseTotem", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;clearStatusEffects()Z", - shift = At.Shift.AFTER - ) - ) - private void addEffectsFromLifeSavingItemComponent(DamageSource source, CallbackInfoReturnable info, @Share("lifeSavingItemComponent") LocalRef lifeSavingItemComponent) { - lifeSavingItemComponent.get().apply((LivingEntity)(Object) this); - } - @Redirect( - method = "tryUseTotem", + method = "tryUseDeathProtector", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;addStatusEffect(Lnet/minecraft/entity/effect/StatusEffectInstance;)Z" + target = "Lnet/minecraft/component/type/DeathProtectionComponent;applyDeathEffects(Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/LivingEntity;)V" ) ) - private boolean doNotAddStatusEffects(LivingEntity instance, StatusEffectInstance effect) { - return false; + private void invokeBeforeDeathHolderEvent(DeathProtectionComponent instance, ItemStack stack, LivingEntity entity) { + if (!(entity.getWorld() instanceof ServerWorld serverWorld)) { + return; + } + + ActionContext context = ActionContext.builder(serverWorld) + .entityPosition(ActionContextParameter.THIS, entity) + .stack(stack) + .build(); + stack.itematic$invokeEvent(ItemEvents.BEFORE_DEATH_HOLDER, context); } @Inject( @@ -382,6 +382,21 @@ private boolean dispensableAlwaysTrue(EquippableComponent instance) { return true; } + @WrapOperation( + method = "canEquip", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" + ) + ) + private Object checkPresenceEquipmentBehavior(ItemStack instance, ComponentType type, Operation original) { + if (instance.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + return null; + } + + return original.call(instance, type); + } + @Redirect( method = "onKilledBy", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GiveGiftsToHeroTaskExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GiveGiftsToHeroTaskExtender.java deleted file mode 100644 index 670db373..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/GiveGiftsToHeroTaskExtender.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.errorcraft.itematic.mixin.entity.ai.brain.task; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.entity.ai.brain.task.GiveGiftsToHeroTask; -import net.minecraft.entity.passive.VillagerEntity; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import org.objectweb.asm.Opcodes; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; - -@Mixin(GiveGiftsToHeroTask.class) -public class GiveGiftsToHeroTaskExtender { - @Redirect( - method = "getGifts", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;", - ordinal = 0 - ) - ) - private ItemStack newItemStackForPoppyUseCreateStack(ItemConvertible item, VillagerEntity villager) { - return villager.getWorld().itematic$createStack(ItemKeys.POPPY); - } - - @Redirect( - method = "getGifts", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;POPPY:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private ItemStack newItemStackForWheatSeedsUseCreateStack(ItemConvertible item, VillagerEntity villager) { - return villager.getWorld().itematic$createStack(ItemKeys.WHEAT_SEEDS); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java index fa91fdfd..4333247d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/ItemFrameEntityExtender.java @@ -1,11 +1,9 @@ package net.errorcraft.itematic.mixin.entity.decoration; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.entity.EntityType; import net.minecraft.entity.decoration.AbstractDecorationEntity; import net.minecraft.entity.decoration.ItemFrameEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -19,17 +17,6 @@ protected ItemFrameEntityExtender(EntityType super(entityType, world); } - @Redirect( - method = "interact", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - @Redirect( method = "getAsItemStack", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java index af6b6e51..a9c33888 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/AllayEntityExtender.java @@ -6,15 +6,10 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.passive.AllayEntity; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import java.util.function.Predicate; @Mixin(AllayEntity.class) public abstract class AllayEntityExtender extends MobEntityExtender { @@ -22,17 +17,6 @@ protected AllayEntityExtender(EntityType entityType, Wor super(entityType, world); } - @Redirect( - method = "matchesDuplicationIngredient", - at = @At( - value = "INVOKE", - target = "Ljava/util/function/Predicate;test(Ljava/lang/Object;)Z" - ) - ) - private boolean testForDuplicationItemUseRegistryKeyCheck(Predicate instance, T t) { - return ((ItemStack) t).itematic$isOf(ItemKeys.AMETHYST_SHARD); - } - @Override protected @Nullable RegistryKey pickBlockKey() { return ItemKeys.ALLAY_SPAWN_EGG; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ArmadilloEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ArmadilloEntityExtender.java index 76e0d9d3..be5536b1 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ArmadilloEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ArmadilloEntityExtender.java @@ -3,7 +3,6 @@ import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.mixin.entity.mob.MobEntityExtender; import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.ArmadilloEntity; import net.minecraft.item.Item; @@ -33,17 +32,6 @@ private boolean isOfForBrushUseRegistryKeyCheck(ItemStack instance, Item item) { return instance.itematic$isOf(ItemKeys.BRUSH); } - @Redirect( - method = "mobTick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/passive/ArmadilloEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" - ) - ) - private ItemEntity dropItemForArmadilloScuteUseRegistryKey(ArmadilloEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.ARMADILLO_SCUTE); - } - @Redirect( method = "brushScute", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ChickenEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ChickenEntityExtender.java index 71727499..4260004e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ChickenEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/ChickenEntityExtender.java @@ -3,17 +3,13 @@ import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.mixin.entity.mob.MobEntityExtender; import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.ChickenEntity; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(ChickenEntity.class) public abstract class ChickenEntityExtender extends MobEntityExtender { @@ -21,17 +17,6 @@ protected ChickenEntityExtender(EntityType entityType, W super(entityType, world); } - @Redirect( - method = "tickMovement", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/passive/ChickenEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" - ) - ) - private ItemEntity dropItemForEggUseRegistryKey(ChickenEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.EGG); - } - @Override protected @Nullable RegistryKey pickBlockKey() { return ItemKeys.CHICKEN_SPAWN_EGG; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PandaEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PandaEntityExtender.java index b68b1c91..a498fd52 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PandaEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PandaEntityExtender.java @@ -10,7 +10,6 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.tag.ItemTags; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -23,18 +22,6 @@ protected PandaEntityExtender(EntityType entityType, Wor super(entityType, world); } - @Redirect( - method = "method_6504", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private static boolean isOfForBambooUseItemTagCheck(ItemStack instance, Item item) { - return instance.isIn(ItemTags.PANDA_FOOD); - } - @Redirect( method = "interactMob", at = @At( @@ -46,29 +33,6 @@ private ItemStack newItemStackUseRegistryEntry(ItemConvertible item, int count, return new ItemStack(stack.getRegistryEntry(), count); } - @Redirect( - method = "canEat", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForCakeUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.CAKE); - } - - @Redirect( - method = { "method_6504" }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 1 - ) - ) - private static boolean isOfForCakeUseRegistryKeyCheckStatic(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.CAKE); - } - @Override protected @Nullable RegistryKey pickBlockKey() { return ItemKeys.PANDA_SPAWN_EGG; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java index 83b54c1e..f34746e9 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/WolfEntityExtender.java @@ -34,18 +34,10 @@ private ItemStack getDefaultStackForArmadilloScuteUseCreateStack(Item instance) } @Redirect( - method = "interactMob", + method = "shouldArmorAbsorbDamage", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;WOLF_ARMOR:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) + target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" ) ) private boolean isOfForWolfArmorUseRegistryKeyCheck(ItemStack instance, Item item) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java index 2ef6375d..56e3d9c5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java @@ -6,7 +6,10 @@ import net.errorcraft.itematic.component.type.ItemListDataComponent; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.EntityType; +import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.player.PlayerAbilities; @@ -15,6 +18,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.RangedWeaponItem; +import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; @@ -24,6 +28,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Slice; @@ -43,14 +48,14 @@ protected PlayerEntityExtender(EntityType entityType, Wo } @Redirect( - method = "updateTurtleHelmet", + method = "tick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/entity/player/PlayerEntity;isEquipped(Lnet/minecraft/item/Item;)Z" ) ) - private boolean isOfForTurtleHelmetUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.TURTLE_HELMET); + private boolean isEquippedForTurtleHelmetUseRegistryKeyCheck(PlayerEntity instance, Item item) { + return this.isEquipped(ItemKeys.TURTLE_HELMET); } @Redirect( @@ -143,4 +148,22 @@ private boolean isOfUseItemComponentCheck(ItemStack instance, Item item) { return this.abilities.creativeMode ? this.getWorld().itematic$createStack(ItemKeys.ARROW) : ItemStack.EMPTY; } + + @Unique + @SuppressWarnings("SameParameterValue") + private boolean isEquipped(RegistryKey item) { + for (EquipmentSlot slot : EquipmentSlot.VALUES) { + ItemStack equippedStack = this.getEquippedStack(slot); + if (!equippedStack.itematic$isOf(item)) { + continue; + } + + EquippableComponent equippable = equippedStack.get(DataComponentTypes.EQUIPPABLE); + if (equippable != null && equippable.slot() == slot) { + return true; + } + } + + return false; + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java index d55438f6..dd9d4de8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/ServerPlayerEntityExtender.java @@ -1,21 +1,18 @@ package net.errorcraft.itematic.mixin.entity.player; -import com.llamalad7.mixinextras.sugar.Local; import com.mojang.authlib.GameProfile; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.NetworkSyncedItem; -import net.minecraft.network.packet.Packet; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.stat.Stat; import net.minecraft.stat.StatType; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -28,51 +25,15 @@ public ServerPlayerEntityExtender(World world, BlockPos pos, float yaw, GameProf super(world, pos, yaw, gameProfile); } - @Redirect( - method = "playerTick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;" - ) - ) - private Item getItemReturnNull(ItemStack instance) { - return null; - } - - @Redirect( - method = "playerTick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/Item;isNetworkSynced()Z" - ) - ) - private boolean isNetworkSyncedUseItemStackVersion(Item instance, @Local ItemStack stack) { - return stack.itematic$isNetworkSynced(); - } - - @Redirect( - method = "playerTick", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/NetworkSyncedItem;createSyncPacket(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;)Lnet/minecraft/network/packet/Packet;" - ) - ) - @Nullable - private Packet createSyncPacketUseItemComponent(NetworkSyncedItem instance, ItemStack stack, World world, PlayerEntity player) { - return stack.itematic$getBehavior(ItemComponentTypes.MAP_HOLDER) - .map(c -> c.createSyncPacket(stack, world, player)) - .orElse(null); - } - - @Redirect( + @Inject( method = "useBook", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) + at = @At("HEAD"), + cancellable = true ) - private boolean isOfForWrittenBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); + private void checkPresenceTextHolderBehavior(ItemStack book, Hand hand, CallbackInfo info) { + if (!book.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER)) { + info.cancel(); + } } @Inject( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java index 953a2572..63a489d4 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java @@ -1,22 +1,17 @@ package net.errorcraft.itematic.mixin.entity.vehicle; -import net.errorcraft.itematic.access.entity.vehicle.BoatEntityTypeAccess; import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; @Mixin(BoatEntity.class) public abstract class BoatEntityExtender extends VehicleEntityExtender { @@ -38,41 +33,9 @@ private ItemStack newItemStackUseCreateStack(ItemConvertible item) { return this.getWorld().itematic$createStack(this.asItemKey()); } - @Redirect( - method = "fall", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/vehicle/BoatEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;", - ordinal = 0 - ) - ) - @SuppressWarnings("DataFlowIssue") - private ItemEntity dropItemUseRegistryKey(BoatEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(((BoatEntityTypeAccess)(Object) this.getVariant()).itematic$materialItemKey()); - } - - @Redirect( - method = "fall", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/vehicle/BoatEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;STICK:Lnet/minecraft/item/Item;" - ) - ) - ) - private ItemEntity dropItemForStickUseRegistryKey(BoatEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.STICK); - } - @Override protected RegistryKey asItemKey() { return switch (this.getVariant()) { - default -> ItemKeys.OAK_BOAT; case SPRUCE -> ItemKeys.SPRUCE_BOAT; case BIRCH -> ItemKeys.BIRCH_BOAT; case JUNGLE -> ItemKeys.JUNGLE_BOAT; @@ -81,65 +44,7 @@ protected RegistryKey asItemKey() { case DARK_OAK -> ItemKeys.DARK_OAK_BOAT; case MANGROVE -> ItemKeys.MANGROVE_BOAT; case BAMBOO -> ItemKeys.BAMBOO_RAFT; + default -> ItemKeys.OAK_BOAT; }; } - - @Mixin(BoatEntity.Type.class) - public static class TypeExtender implements BoatEntityTypeAccess { - @Shadow - @Final - public static BoatEntity.Type OAK; - - @Shadow - @Final - public static BoatEntity.Type SPRUCE; - - @Shadow - @Final - public static BoatEntity.Type BIRCH; - - @Shadow - @Final - public static BoatEntity.Type JUNGLE; - - @Shadow - @Final - public static BoatEntity.Type ACACIA; - - @Shadow - @Final - public static BoatEntity.Type CHERRY; - - @Shadow - @Final - public static BoatEntity.Type DARK_OAK; - - @Shadow - @Final - public static BoatEntity.Type MANGROVE; - - @Shadow - @Final - public static BoatEntity.Type BAMBOO; - - @Unique - private RegistryKey materialItemKey; - - static { - ((BoatEntityExtender.TypeExtender)(Object) OAK).materialItemKey = ItemKeys.OAK_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) SPRUCE).materialItemKey = ItemKeys.SPRUCE_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) BIRCH).materialItemKey = ItemKeys.BIRCH_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) JUNGLE).materialItemKey = ItemKeys.JUNGLE_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) ACACIA).materialItemKey = ItemKeys.ACACIA_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) CHERRY).materialItemKey = ItemKeys.CHERRY_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) DARK_OAK).materialItemKey = ItemKeys.DARK_OAK_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) MANGROVE).materialItemKey = ItemKeys.MANGROVE_PLANKS; - ((BoatEntityExtender.TypeExtender)(Object) BAMBOO).materialItemKey = ItemKeys.BAMBOO_PLANKS; - } - - @Override - public RegistryKey itematic$materialItemKey() { - return this.materialItemKey; - } - } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java index 4902cf48..ed992526 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java @@ -18,7 +18,6 @@ public ChestBoatEntityExtender(EntityType entityType, Worl @Override protected RegistryKey asItemKey() { return switch (this.getVariant()) { - default -> ItemKeys.OAK_CHEST_BOAT; case SPRUCE -> ItemKeys.SPRUCE_CHEST_BOAT; case BIRCH -> ItemKeys.BIRCH_CHEST_BOAT; case JUNGLE -> ItemKeys.JUNGLE_CHEST_BOAT; @@ -27,6 +26,7 @@ protected RegistryKey asItemKey() { case DARK_OAK -> ItemKeys.DARK_OAK_CHEST_BOAT; case MANGROVE -> ItemKeys.MANGROVE_CHEST_BOAT; case BAMBOO -> ItemKeys.BAMBOO_CHEST_RAFT; + default -> ItemKeys.OAK_CHEST_BOAT; }; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index cada0f99..13cd2ed9 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -455,15 +455,6 @@ public SoundEvent getBreakSound() { .orElse(SoundEvents.ENTITY_ITEM_BREAK); } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public boolean isNetworkSynced() { - return this.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - @Inject( method = "getUseAction", at = @At("HEAD"), @@ -605,6 +596,11 @@ private void checkTextHolderItemComponent(ItemStack stack, CallbackInfoReturnabl return this.events.invokeEvent(event, context); } + @Override + public boolean itematic$hasEventListener(ItemEvent event) { + return this.events.hasListener(event); + } + @Override public boolean itematic$mayStartUsing(World world, PlayerEntity user, Hand hand, ItemStack stack) { return this.itematic$getBehavior(ItemComponentTypes.FOOD) diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java index 2c3a3899..0b0f2f1d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java @@ -28,7 +28,7 @@ import net.minecraft.component.ComponentChanges; import net.minecraft.component.ComponentHolder; import net.minecraft.component.ComponentMap; -import net.minecraft.component.ComponentMapImpl; +import net.minecraft.component.MergedComponentMap; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -92,7 +92,7 @@ public abstract class ItemStackExtender implements ComponentHolder, ItemStackAcc @Shadow @Final @Mutable - ComponentMapImpl components; + MergedComponentMap components; @Shadow public abstract boolean isEmpty(); @@ -115,9 +115,6 @@ public abstract class ItemStackExtender implements ComponentHolder, ItemStackAcc @Shadow public abstract int getCount(); - @Shadow - protected abstract ItemStack applyRemainderAndCooldown(LivingEntity user, ItemStack stack); - @Unique private final Set activeEvents = new HashSet<>(); @@ -189,7 +186,7 @@ private static Item asItemReturnNullToPreventNullPointerExceptionStatic(ItemConv } @Redirect( - method = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/ComponentMapImpl;)V", + method = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/MergedComponentMap;)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemConvertible;asItem()Lnet/minecraft/item/Item;" @@ -217,18 +214,18 @@ private static ComponentMap getComponentsReturnNullToPreventNullPointerException method = "(Lnet/minecraft/registry/entry/RegistryEntry;ILnet/minecraft/component/ComponentChanges;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/component/ComponentMapImpl;create(Lnet/minecraft/component/ComponentMap;Lnet/minecraft/component/ComponentChanges;)Lnet/minecraft/component/ComponentMapImpl;" + target = "Lnet/minecraft/component/MergedComponentMap;create(Lnet/minecraft/component/ComponentMap;Lnet/minecraft/component/ComponentChanges;)Lnet/minecraft/component/MergedComponentMap;" ) ) - private static ComponentMapImpl createComponentMapReturnNullToPreventNullPointerException(ComponentMap baseComponents, ComponentChanges changes) { + private static MergedComponentMap createComponentMapReturnNullToPreventNullPointerException(ComponentMap baseComponents, ComponentChanges changes) { return null; } @Inject( - method = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/ComponentMapImpl;)V", + method = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/MergedComponentMap;)V", at = @At("TAIL") ) - private void checkItemValue(ItemConvertible item, int count, ComponentMapImpl components, CallbackInfo info) { + private void checkItemValue(ItemConvertible item, int count, MergedComponentMap components, CallbackInfo info) { if (item != null) { LOGGER.warn(Util.stackTraceMessage("Tried to create an item stack from an item or item-like value directly. This is no longer supported and should be modified to use a holder instead.")); } @@ -312,10 +309,10 @@ private Item getItemGetItemFieldUseRegistryEntryToPreventNullPointerException(It method = "copy", at = @At( value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/ComponentMapImpl;)Lnet/minecraft/item/ItemStack;" + target = "(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/MergedComponentMap;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack newItemStackUseRegistryEntry(ItemConvertible item, int count, ComponentMapImpl components) { + private ItemStack newItemStackUseRegistryEntry(ItemConvertible item, int count, MergedComponentMap components) { ItemStack copy = new ItemStack(this.entry, count); copy.itematic$setComponents(components); return copy; @@ -456,7 +453,7 @@ public void containsDataComponentUseItemBehaviorComponent(ItemStack ingredient, target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" ) ) - public boolean containsDataComponentUseItemBehaviorComponent(boolean original) { + public boolean containsEnchantableDataComponentAlsoCheckItemBehaviorComponent(boolean original) { return original && this.itematic$hasBehavior(ItemComponentTypes.ENCHANTABLE); } @@ -532,17 +529,6 @@ private void checkEmptyStack(CallbackInfoReturnable info) { } } - @Redirect( - method = "getTooltip", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return this.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - @WrapWithCondition( method = "getTooltip", at = @At( @@ -617,7 +603,7 @@ private int limitDamageApplied(int original) { shift = At.Shift.AFTER ) ) - private void invokeDamageToolEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { + private void invokeDamageItemEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { if (this.context == null) { return; } @@ -632,7 +618,7 @@ private void invokeDamageToolEvent(int damage, @Nullable ServerPlayerEntity play target = "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V" ) ) - private void invokeBreakToolEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { + private void invokeBreakItemEvent(int damage, @Nullable ServerPlayerEntity player, Consumer breakCallback, CallbackInfo info) { if (this.context == null) { return; } @@ -718,7 +704,7 @@ public boolean canBeEnchantedWith(RegistryEntry enchantment, Enchan } @Override - public void itematic$setComponents(ComponentMapImpl components) { + public void itematic$setComponents(MergedComponentMap components) { this.components = components; } @@ -805,25 +791,25 @@ public boolean canBeEnchantedWith(RegistryEntry enchantment, Enchan } @Override - public boolean itematic$canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { + public boolean itematic$hasEventListener(ItemEvent event) { if (this.entry == null) { - return true; - } - - if (miner.isCreative() && this.isIn(ItematicItemTags.PREVENTS_MINING_IN_CREATIVE)) { return false; } - return this.entry.value().canMine(state, world, pos, miner); + return this.entry.value().itematic$hasEventListener(event); } @Override - public boolean itematic$isNetworkSynced() { + public boolean itematic$canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { if (this.entry == null) { + return true; + } + + if (miner.isCreative() && this.isIn(ItematicItemTags.PREVENTS_MINING_IN_CREATIVE)) { return false; } - return this.entry.value().isNetworkSynced(); + return this.entry.value().canMine(state, world, pos, miner); } @Override @@ -848,10 +834,10 @@ public boolean canBeEnchantedWith(RegistryEntry enchantment, Enchan private void setFields(RegistryEntry entry) { this.entry = entry; if (entry.hasKeyAndValue()) { - this.components = new ComponentMapImpl(entry.value().getComponents()); + this.components = new MergedComponentMap(entry.value().getComponents()); entry.value().postProcessComponents((ItemStack)(Object) this); } else { - this.components = new ComponentMapImpl(ComponentMap.EMPTY); + this.components = new MergedComponentMap(ComponentMap.EMPTY); } } @@ -859,10 +845,10 @@ private void setFields(RegistryEntry entry) { private void setFields(RegistryEntry entry, ComponentChanges changes) { this.entry = entry; if (entry.hasKeyAndValue()) { - this.components = ComponentMapImpl.create(entry.value().getComponents(), changes); + this.components = MergedComponentMap.create(entry.value().getComponents(), changes); entry.value().postProcessComponents((ItemStack)(Object) this); } else { - this.components = new ComponentMapImpl(ComponentMap.EMPTY); + this.components = new MergedComponentMap(ComponentMap.EMPTY); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifierExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifierExtender.java index ddd2004d..473d0fd5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifierExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifierExtender.java @@ -14,20 +14,20 @@ @Mixin(ContainerComponentModifier.class) public interface ContainerComponentModifierExtender extends ContainerComponentModifierAccess { @Shadow - T create(T var1, Stream var2); + T apply(T component, Stream contents); @Redirect( method = "apply(Lnet/minecraft/item/ItemStack;Ljava/lang/Object;Ljava/util/stream/Stream;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/loot/ContainerComponentModifier;create(Ljava/lang/Object;Ljava/util/stream/Stream;)Ljava/lang/Object;" + target = "Lnet/minecraft/loot/ContainerComponentModifier;apply(Ljava/lang/Object;Ljava/util/stream/Stream;)Ljava/lang/Object;" ) ) - private T useStackAwareVersion(ContainerComponentModifier instance, T object, Stream contents, @Local(argsOnly = true) ItemStack stack) { - return this.itematic$create(stack, object, contents); + private T useStackAwareVersion(ContainerComponentModifier instance, T component, Stream newContents, @Local(argsOnly = true) ItemStack stack) { + return this.itematic$apply(stack, component, newContents); } - default T itematic$create(ItemStack stack, T component, Stream newContents) { - return this.create(component, newContents); + default T itematic$apply(ItemStack stack, T component, Stream newContents) { + return this.apply(component, newContents); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java index 8825acf2..43177634 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/ContainerComponentModifiersExtender.java @@ -12,7 +12,7 @@ public interface ContainerComponentModifiersExtender { @Mixin(targets = "net/minecraft/loot/ContainerComponentModifiers$2") class BundleContentsExtender implements ContainerComponentModifierAccess { @Override - public BundleContentsComponent itematic$create(ItemStack stack, BundleContentsComponent component, Stream newContents) { + public BundleContentsComponent itematic$apply(ItemStack stack, BundleContentsComponent component, Stream newContents) { return stack.itematic$getBehavior(ItemComponentTypes.ITEM_HOLDER) .map(c -> c.createBuilder(stack, component)) .map(BundleContentsComponent.Builder::clear) diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapCloningRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapCloningRecipeExtender.java index d55fafc2..d37a9a09 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapCloningRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapCloningRecipeExtender.java @@ -4,11 +4,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.MapCloningRecipe; -import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.Slice; @Mixin(MapCloningRecipe.class) public class MapCloningRecipeExtender { @@ -19,37 +17,7 @@ public class MapCloningRecipeExtender { }, at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;FILLED_MAP:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForFilledMapUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.FILLED_MAP); - } - - @Redirect( - method = { - "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;" - }, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;MAP:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) + target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" ) ) private boolean isOfForMapUseRegistryKeyCheck(ItemStack instance, Item item) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java index 9c77ae7b..5a912ccb 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java @@ -2,7 +2,6 @@ import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.recipe.MapExtendingRecipe; @@ -48,17 +47,6 @@ private boolean matchesUseRegistryKeyCheck(ShapedRecipe instance, CraftingRecipe return true; } - @Redirect( - method = "findFilledMap", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private static boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - @Unique private static boolean isValid(ItemStack stack, int index) { if (index == MAP_SLOT) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java index 856e2a28..d8a3d3a5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/BrewingStandScreenHandlerExtender.java @@ -67,19 +67,4 @@ private static boolean matchesIsOfForGlassBottleUseRegistryKeyCheck(ItemStack in return instance.itematic$isOf(ItemKeys.GLASS_BOTTLE); } } - - @Mixin(targets = "net/minecraft/screen/BrewingStandScreenHandler$FuelSlot") - public static class FuelSlotExtender { - @Redirect( - method = "matches", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private static boolean isOfForBlazePowderUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.BLAZE_POWDER); - } - } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java index 65aac27f..7be8b94d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/screen/CartographyTableScreenHandlerExtender.java @@ -1,7 +1,6 @@ package net.errorcraft.itematic.mixin.screen; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.screen.CartographyTableScreenHandler; @@ -14,26 +13,10 @@ @Mixin(CartographyTableScreenHandler.class) public class CartographyTableScreenHandlerExtender { @Redirect( - method = "quickMove", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "FIELD", - target = "Lnet/minecraft/item/Items;FILLED_MAP:Lnet/minecraft/item/Item;", - opcode = Opcodes.GETSTATIC - ) - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - - @Redirect( - method = { "method_17382", "quickMove" }, + method = { + "method_17382", + "quickMove" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -52,7 +35,10 @@ private boolean isOfForGlassPaneUseRegistryKeyCheck(ItemStack instance, Item ite } @Redirect( - method = { "method_17382", "quickMove" }, + method = { + "method_17382", + "quickMove" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -71,7 +57,10 @@ private boolean isOfForPaperUseRegistryKeyCheck(ItemStack instance, Item item) { } @Redirect( - method = { "method_17382", "quickMove" }, + method = { + "method_17382", + "quickMove" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", @@ -89,21 +78,6 @@ private boolean isOfForMapUseRegistryKeyCheck(ItemStack instance, Item item) { return instance.itematic$isOf(ItemKeys.MAP); } - @Mixin(targets = "net/minecraft/screen/CartographyTableScreenHandler$3") - public static class MapSlotExtender { - @Redirect( - method = "canInsert", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", - ordinal = 0 - ) - ) - private boolean isOfForFilledMapUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.MAP_HOLDER); - } - } - @Mixin(targets = "net/minecraft/screen/CartographyTableScreenHandler$4") public static class AdditionSlotExtender { @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java index 0a618a70..999ac777 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/server/network/ServerPlayNetworkHandlerExtender.java @@ -1,10 +1,11 @@ package net.errorcraft.itematic.mixin.server.network; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.WritableItemComponent; -import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.server.network.ServerPlayNetworkHandler; @@ -16,28 +17,28 @@ @Mixin(ServerPlayNetworkHandler.class) public class ServerPlayNetworkHandlerExtender { - @Redirect( + @ModifyExpressionValue( method = "updateBookContent", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" ) ) - private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item) { - return instance.itematic$hasBehavior(ItemComponentTypes.WRITABLE); + private boolean containsWritableBookContentDataComponentAlsoCheckItemBehaviorComponent(boolean original, @Local ItemStack stack) { + return original && stack.itematic$hasBehavior(ItemComponentTypes.WRITABLE); } - @Redirect( + @ModifyExpressionValue( method = "addBook", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;contains(Lnet/minecraft/component/ComponentType;)Z" ) ) - private boolean isOfForWritableBookUseItemComponentCheck(ItemStack instance, Item item, @Share("writable") LocalRef writable) { - Optional optionalWritable = instance.itematic$getBehavior(ItemComponentTypes.WRITABLE); + private boolean containsWritableBookContentDataComponentAlsoCheckAndStoreItemBehaviorComponent(boolean original, @Local ItemStack stack, @Share("writable") LocalRef writable) { + Optional optionalWritable = stack.itematic$getBehavior(ItemComponentTypes.WRITABLE); optionalWritable.ifPresent(writable::set); - return optionalWritable.isPresent(); + return original && optionalWritable.isPresent(); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/world/WorldExtender.java b/src/main/java/net/errorcraft/itematic/mixin/world/WorldExtender.java index 0cbe12c0..a42db218 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/world/WorldExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/world/WorldExtender.java @@ -11,7 +11,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.util.math.Vec3d; -import net.minecraft.util.profiler.Profiler; import net.minecraft.world.MutableWorldProperties; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; @@ -23,8 +22,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.function.Supplier; - @Mixin(World.class) public abstract class WorldExtender implements WorldViewAccess, WorldAccess { @Shadow @@ -37,7 +34,7 @@ public abstract class WorldExtender implements WorldViewAccess, WorldAccess { method = "", at = @At("TAIL") ) - private void constructorSetItemAccess(MutableWorldProperties properties, RegistryKey registryRef, DynamicRegistryManager registryManager, RegistryEntry dimensionEntry, Supplier profiler, boolean isClient, boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates, CallbackInfo info) { + private void constructorSetItemAccess(MutableWorldProperties properties, RegistryKey registryRef, DynamicRegistryManager registryManager, RegistryEntry dimensionEntry, boolean isClient, boolean debugWorld, long seed, int maxChainedNeighborUpdates, CallbackInfo info) { this.itemAccess = new ItemAccess(registryManager); } diff --git a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java index eace992f..dcbf31cf 100644 --- a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java +++ b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateExtraFields.java @@ -6,7 +6,7 @@ import net.errorcraft.itematic.network.codec.PacketCodecUtil; import net.errorcraft.itematic.registry.ItematicRegistries; import net.errorcraft.itematic.registry.ItematicRegistryKeys; -import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.component.ComponentType; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; @@ -20,8 +20,8 @@ public record ItemPredicateExtraFields(Optional>> behavior, Optional>> dataComponents) { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - ItematicCodecs.setCodec(ItematicRegistries.ITEM_COMPONENT_TYPE.getCodec()).optionalFieldOf("behavior").forGetter(ItemPredicateExtraFields::behavior), - ItematicCodecs.setCodec(Registries.DATA_COMPONENT_TYPE.getCodec()).optionalFieldOf("data_components").forGetter(ItemPredicateExtraFields::dataComponents) + SetCodec.forRegistry(ItematicRegistries.ITEM_COMPONENT_TYPE).optionalFieldOf("behavior").forGetter(ItemPredicateExtraFields::behavior), + SetCodec.forRegistry(Registries.DATA_COMPONENT_TYPE).optionalFieldOf("data_components").forGetter(ItemPredicateExtraFields::dataComponents) ).apply(instance, ItemPredicateExtraFields::new)); public static final PacketCodec PACKET_CODEC = PacketCodec.tuple( PacketCodecs.registryValue(ItematicRegistryKeys.ITEM_COMPONENT_TYPE).collect(PacketCodecUtil::set).collect(PacketCodecs::optional), ItemPredicateExtraFields::behavior, diff --git a/src/main/java/net/errorcraft/itematic/serialization/ItematicCodecs.java b/src/main/java/net/errorcraft/itematic/serialization/ItematicCodecs.java index 63af13ae..c8edb56a 100644 --- a/src/main/java/net/errorcraft/itematic/serialization/ItematicCodecs.java +++ b/src/main/java/net/errorcraft/itematic/serialization/ItematicCodecs.java @@ -1,20 +1,12 @@ package net.errorcraft.itematic.serialization; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import com.mojang.serialization.DynamicOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.mixin.util.dynamic.CodecsAccessor; import net.minecraft.util.dynamic.Codecs; import org.apache.commons.lang3.math.Fraction; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - public class ItematicCodecs { public static final Codec NON_NEGATIVE_FLOAT = Codec.FLOAT.validate(value -> { if (value >= 0 && value <= Float.MAX_VALUE) { @@ -48,10 +40,6 @@ public static Codec index(int size) { }); } - public static Codec> setCodec(Codec codec) { - return new SetCodec<>(codec); - } - public static Codec positiveFloat(float maxInclusive) { if (maxInclusive <= 0.0f) { throw new IllegalArgumentException("maxInclusive must be positive, got " + maxInclusive + " instead"); @@ -70,36 +58,4 @@ public static Codec positiveFraction(int maxInclusive) { return DataResult.success(fraction); }); } - - private static class SetCodec implements Codec> { - private final Codec> listCodec; - - private SetCodec(Codec codec) { - this.listCodec = codec.listOf(); - } - - @Override - public DataResult, T>> decode(DynamicOps ops, T input) { - return this.listCodec.decode(ops, input) - .flatMap(pair -> { - List elements = pair.getFirst(); - Set set = new HashSet<>(); - Set duplicates = new HashSet<>(); - for (E element : elements) { - if (!set.add(element)) { - duplicates.add(element); - } - } - if (!duplicates.isEmpty()) { - return DataResult.error(() -> "Set contained duplicate entries: " + duplicates.stream().map(E::toString).collect(Collectors.joining(", "))); - } - return DataResult.success(Pair.of(set, pair.getSecond())); - }); - } - - @Override - public DataResult encode(Set input, DynamicOps ops, T prefix) { - return this.listCodec.encode(new ArrayList<>(input), ops, prefix); - } - } } diff --git a/src/main/java/net/errorcraft/itematic/serialization/SetCodec.java b/src/main/java/net/errorcraft/itematic/serialization/SetCodec.java new file mode 100644 index 00000000..00fa4c1f --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/serialization/SetCodec.java @@ -0,0 +1,58 @@ +package net.errorcraft.itematic.serialization; + +import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.DynamicOps; +import net.minecraft.registry.Registry; + +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class SetCodec implements Codec> { + private final Codec> listCodec; + private final Comparator comparator; + + private SetCodec(Codec codec, Comparator comparator) { + this.listCodec = codec.listOf(); + this.comparator = comparator; + } + + @SuppressWarnings("DataFlowIssue") + public static Codec> forRegistry(Registry registry) { + return new SetCodec<>(registry.getCodec(), Comparator.comparing(registry::getId)); + } + + public static > Codec> forEnum(Codec codec) { + return new SetCodec<>(codec, Enum::compareTo); + } + + @Override + public DataResult, T>> decode(DynamicOps ops, T input) { + return this.listCodec.decode(ops, input) + .flatMap(pair -> { + List elements = pair.getFirst(); + Set set = new HashSet<>(); + Set duplicates = new HashSet<>(); + for (E element : elements) { + if (!set.add(element)) { + duplicates.add(element); + } + } + + if (!duplicates.isEmpty()) { + return DataResult.error(() -> "Set contained duplicate entries: " + duplicates.stream().map(E::toString).collect(Collectors.joining(", "))); + } + + return DataResult.success(Pair.of(set, pair.getSecond())); + }); + } + + @Override + public DataResult encode(Set input, DynamicOps ops, T prefix) { + return this.listCodec.encode(input.stream().sorted(this.comparator).toList(), ops, prefix); + } +} diff --git a/src/main/java/net/errorcraft/itematic/world/action/actions/ShearAtPositionAction.java b/src/main/java/net/errorcraft/itematic/world/action/actions/ShearAtPositionAction.java index 13ead9bd..14d948a0 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/actions/ShearAtPositionAction.java +++ b/src/main/java/net/errorcraft/itematic/world/action/actions/ShearAtPositionAction.java @@ -29,6 +29,6 @@ public ActionType type() { public boolean execute(ActionContext context) { ServerWorld world = context.world(); BlockPos pos = context.blockPos(this.position); - return ShearsDispenserBehaviorAccessor.tryShearBlock(world, pos) || ShearsDispenserBehaviorAccessor.tryShearEntity(world, pos); + return ShearsDispenserBehaviorAccessor.tryShearBlock(world, pos) || ShearsDispenserBehaviorAccessor.tryShearEntity(world, pos, context.stack()); } } diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 29e532f9..6309fb8d 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -108,7 +108,6 @@ "entity.ai.brain.task.CrossbowAttackTaskExtender", "entity.ai.brain.task.FarmerWorkTaskExtender", "entity.ai.brain.task.GatherItemsVillagerTaskExtender", - "entity.ai.brain.task.GiveGiftsToHeroTaskExtender", "entity.ai.brain.task.LookTargetUtilExtender", "entity.ai.brain.task.MeleeAttackTaskExtender", "entity.ai.brain.task.RamImpactTaskExtender", @@ -242,7 +241,6 @@ "entity.raid.RaiderEntityExtender$PickUpBannerAsLeaderGoalExtender", "entity.vehicle.AbstractMinecartEntityExtender", "entity.vehicle.BoatEntityExtender", - "entity.vehicle.BoatEntityExtender$TypeExtender", "entity.vehicle.ChestBoatEntityExtender", "entity.vehicle.ChestMinecartEntityExtender", "entity.vehicle.FurnaceMinecartEntityExtender", @@ -349,11 +347,9 @@ "scoreboard.ScoreboardStateExtender", "screen.AbstractFurnaceScreenHandlerExtender", "screen.AnvilScreenHandlerExtender", - "screen.BrewingStandScreenHandlerExtender$FuelSlotExtender", "screen.BrewingStandScreenHandlerExtender$PotionSlotExtender", "screen.CartographyTableScreenHandlerExtender", "screen.CartographyTableScreenHandlerExtender$AdditionSlotExtender", - "screen.CartographyTableScreenHandlerExtender$MapSlotExtender", "screen.EnchantmentScreenHandlerExtender", "screen.EnchantmentScreenHandlerExtender$LapisLazuliSlotExtender", "screen.GrindstoneScreenHandlerExtender", From 2ace1c20cd106def3787246b78ad0bc626b9ae86 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Thu, 5 Feb 2026 22:26:34 +0100 Subject: [PATCH 06/11] Port to 24w38a --- gradle.properties | 6 +- .../BundleTooltipSubmenuHandlerExtender.java | 5 +- ...PlayerHeldItemFeatureRendererExtender.java | 2 +- .../itematic/data/server/RecipeProvider.java | 89 --------- .../errorcraft/itematic/gametest/Assert.java | 1 + .../gametest/block/AnvilBlockTestSuite.java | 2 +- .../gametest/block/BeehiveBlockTestSuite.java | 2 +- .../block/BrewingStandBlockTestSuite.java | 2 +- .../gametest/block/CandleBlockTestSuite.java | 2 +- .../block/ComposterBlockTestSuite.java | 2 +- .../block/DispenserBehaviorTestSuite.java | 2 +- .../block/EnchantingTableTestSuite.java | 2 +- .../gametest/block/GrindstoneTestSuite.java | 2 +- .../gametest/block/PickBlockTestSuite.java | 2 +- .../block/ShulkerBoxBlockTestSuite.java | 2 +- .../block/WaterCauldronBlockTestSuite.java | 2 +- .../gametest/entity/PickEntityTestSuite.java | 2 +- .../passive/ArmadilloEntityTestSuite.java | 3 +- .../passive/AxolotlEntityTestSuite.java | 3 +- .../entity/passive/CamelEntityTestSuite.java | 3 +- .../entity/passive/FrogEntityTestSuite.java | 3 +- .../entity/passive/GoatEntityTestSuite.java | 3 +- .../passive/MooshroomEntityTestSuite.java | 2 +- .../entity/passive/SheepEntityTestSuite.java | 2 +- .../passive/SnifferEntityTestSuite.java | 3 +- .../entity/passive/WolfEntityTestSuite.java | 2 +- .../itematic/gametest/item/BowTestSuite.java | 2 +- .../gametest/item/BrushTestSuite.java | 2 +- .../gametest/item/FlowerPotItemTestSuite.java | 2 +- .../itematic/gametest/item/LeadTestSuite.java | 2 +- .../itematic/gametest/item/SignTestSuite.java | 2 +- .../BlockItemComponentTestSuite.java | 2 +- .../ImmuneToDamageItemComponentTestSuite.java | 2 +- .../ThrowableItemComponentTestSuite.java | 2 +- .../UseableOnFluidItemComponentTestSuite.java | 4 +- .../data/minecraft/item/black_bundle.json | 57 ++++++ .../data/minecraft/item/blue_bundle.json | 57 ++++++ .../data/minecraft/item/brown_bundle.json | 57 ++++++ .../data/minecraft/item/cyan_bundle.json | 57 ++++++ .../data/minecraft/item/gray_bundle.json | 57 ++++++ .../data/minecraft/item/green_bundle.json | 57 ++++++ .../data/minecraft/item/honey_bottle.json | 1 + .../minecraft/item/light_blue_bundle.json | 57 ++++++ .../minecraft/item/light_gray_bundle.json | 57 ++++++ .../data/minecraft/item/lime_bundle.json | 57 ++++++ .../data/minecraft/item/magenta_bundle.json | 57 ++++++ .../data/minecraft/item/orange_bundle.json | 57 ++++++ .../data/minecraft/item/pink_bundle.json | 57 ++++++ .../data/minecraft/item/purple_bundle.json | 57 ++++++ .../data/minecraft/item/red_bundle.json | 57 ++++++ .../data/minecraft/item/white_bundle.json | 57 ++++++ .../data/minecraft/item/wolf_armor.json | 1 + .../data/minecraft/item/yellow_bundle.json | 57 ++++++ .../recipes/shulker_box_coloring_black.json | 7 - .../recipes/shulker_box_coloring_blue.json | 7 - .../recipes/shulker_box_coloring_brown.json | 7 - .../recipes/shulker_box_coloring_cyan.json | 7 - .../recipes/shulker_box_coloring_gray.json | 7 - .../recipes/shulker_box_coloring_green.json | 7 - .../shulker_box_coloring_light_blue.json | 7 - .../shulker_box_coloring_light_gray.json | 7 - .../recipes/shulker_box_coloring_lime.json | 7 - .../recipes/shulker_box_coloring_magenta.json | 7 - .../recipes/shulker_box_coloring_orange.json | 7 - .../recipes/shulker_box_coloring_pink.json | 7 - .../recipes/shulker_box_coloring_purple.json | 7 - .../recipes/shulker_box_coloring_red.json | 7 - .../recipes/shulker_box_coloring_white.json | 7 - .../recipes/shulker_box_coloring_yellow.json | 7 - .../net/errorcraft/itematic/Itematic.java | 2 - .../item/AnimalArmorItemTypeAccess.java | 4 +- .../MinecartEntityInitializer.java | 46 +++-- .../errorcraft/itematic/item/ItemKeys.java | 16 ++ .../errorcraft/itematic/item/ItemUtil.java | 171 ++++++++++++++---- .../components/ArmorItemComponent.java | 2 +- .../components/EntityItemComponent.java | 1 - .../components/ItemHolderItemComponent.java | 35 ++++ .../components/ProjectileItemComponent.java | 2 +- .../components/SpawnEggItemComponent.java | 25 ++- .../itematic/item/placement/EntityPlacer.java | 2 +- .../mixin/entity/EntityTypeExtender.java | 18 +- .../AbstractMinecartEntityExtender.java | 49 ----- .../vehicle/ChestMinecartEntityExtender.java | 15 ++ .../CommandBlockMinecartEntityExtender.java | 30 +++ .../FurnaceMinecartEntityExtender.java | 15 ++ .../vehicle/HopperMinecartEntityExtender.java | 15 ++ .../vehicle/MinecartEntityExtender.java | 30 +++ .../SpawnerMinecartEntityExtender.java | 30 +++ .../vehicle/TntMinecartEntityExtender.java | 15 ++ .../mixin/recipe/RawShapedRecipeExtender.java | 4 +- .../SmithingTransformRecipeExtender.java | 2 +- .../mixin/recipe/TransmuteRecipeExtender.java | 30 +++ .../itematic/recipe/ItemColoringRecipe.java | 129 ------------- .../recipe/ItematicRecipeSerializers.java | 11 -- src/main/resources/itematic.mixins.json | 5 +- 95 files changed, 1391 insertions(+), 510 deletions(-) create mode 100644 src/main/generated/data/minecraft/item/black_bundle.json create mode 100644 src/main/generated/data/minecraft/item/blue_bundle.json create mode 100644 src/main/generated/data/minecraft/item/brown_bundle.json create mode 100644 src/main/generated/data/minecraft/item/cyan_bundle.json create mode 100644 src/main/generated/data/minecraft/item/gray_bundle.json create mode 100644 src/main/generated/data/minecraft/item/green_bundle.json create mode 100644 src/main/generated/data/minecraft/item/light_blue_bundle.json create mode 100644 src/main/generated/data/minecraft/item/light_gray_bundle.json create mode 100644 src/main/generated/data/minecraft/item/lime_bundle.json create mode 100644 src/main/generated/data/minecraft/item/magenta_bundle.json create mode 100644 src/main/generated/data/minecraft/item/orange_bundle.json create mode 100644 src/main/generated/data/minecraft/item/pink_bundle.json create mode 100644 src/main/generated/data/minecraft/item/purple_bundle.json create mode 100644 src/main/generated/data/minecraft/item/red_bundle.json create mode 100644 src/main/generated/data/minecraft/item/white_bundle.json create mode 100644 src/main/generated/data/minecraft/item/yellow_bundle.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json delete mode 100644 src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractMinecartEntityExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/CommandBlockMinecartEntityExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/MinecartEntityExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/SpawnerMinecartEntityExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java delete mode 100644 src/main/java/net/errorcraft/itematic/recipe/ItematicRecipeSerializers.java diff --git a/gradle.properties b/gradle.properties index 9492661f..39f0424b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w37a - yarn_mappings=24w37a+build.6 + minecraft_version=24w38a + yarn_mappings=24w38a+build.6 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.104.1+1.21.2 + fabric_version=0.105.0+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java index 04836aa6..648a91cf 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/tooltip/BundleTooltipSubmenuHandlerExtender.java @@ -4,6 +4,7 @@ import net.minecraft.client.gui.tooltip.BundleTooltipSubmenuHandler; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.registry.tag.TagKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -14,10 +15,10 @@ public class BundleTooltipSubmenuHandlerExtender { method = "isApplicableTo", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" ) ) - private boolean isOfForBundleUseItemComponentCheck(ItemStack instance, Item item) { + private boolean isInForBundlesUseItemComponentCheck(ItemStack instance, TagKey tag) { return instance.itematic$hasBehavior(ItemComponentTypes.ITEM_HOLDER); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java index 0e19a631..ace6e0f4 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java @@ -11,7 +11,7 @@ @Mixin(PlayerHeldItemFeatureRenderer.class) public class PlayerHeldItemFeatureRendererExtender { @Redirect( - method = "renderItem", + method = "renderItem(Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;Lnet/minecraft/util/Arm;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java index f4156ead..b603dc56 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/RecipeProvider.java @@ -3,8 +3,6 @@ import it.unimi.dsi.fastutil.chars.Char2ObjectMap; import it.unimi.dsi.fastutil.chars.Char2ObjectOpenHashMap; import net.errorcraft.itematic.item.ItemKeys; -import net.errorcraft.itematic.item.ItematicItemTags; -import net.errorcraft.itematic.recipe.ItemColoringRecipe; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricCodecDataProvider; import net.minecraft.data.DataOutput; @@ -12,14 +10,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.*; -import net.minecraft.recipe.book.CraftingRecipeCategory; import net.minecraft.recipe.book.RecipeCategory; -import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryEntryList; -import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; import java.util.ArrayList; @@ -70,86 +65,6 @@ protected void configure(BiConsumer> provider, RegistryWra .pattern("CCC") .build() ); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_black"), colorShulkerBox( - DyeColor.BLACK, - items.getOrThrow(ItemKeys.BLACK_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_blue"), colorShulkerBox( - DyeColor.BLUE, - items.getOrThrow(ItemKeys.BLUE_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_brown"), colorShulkerBox( - DyeColor.BROWN, - items.getOrThrow(ItemKeys.BROWN_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_cyan"), colorShulkerBox( - DyeColor.CYAN, - items.getOrThrow(ItemKeys.CYAN_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_gray"), colorShulkerBox( - DyeColor.GRAY, - items.getOrThrow(ItemKeys.GRAY_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_green"), colorShulkerBox( - DyeColor.GREEN, - items.getOrThrow(ItemKeys.GREEN_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_light_blue"), colorShulkerBox( - DyeColor.LIGHT_BLUE, - items.getOrThrow(ItemKeys.LIGHT_BLUE_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_light_gray"), colorShulkerBox( - DyeColor.LIGHT_GRAY, - items.getOrThrow(ItemKeys.LIGHT_GRAY_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_lime"), colorShulkerBox( - DyeColor.LIME, - items.getOrThrow(ItemKeys.LIME_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_magenta"), colorShulkerBox( - DyeColor.MAGENTA, - items.getOrThrow(ItemKeys.MAGENTA_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_orange"), colorShulkerBox( - DyeColor.ORANGE, - items.getOrThrow(ItemKeys.ORANGE_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_pink"), colorShulkerBox( - DyeColor.PINK, - items.getOrThrow(ItemKeys.PINK_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_purple"), colorShulkerBox( - DyeColor.PURPLE, - items.getOrThrow(ItemKeys.PURPLE_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_red"), colorShulkerBox( - DyeColor.RED, - items.getOrThrow(ItemKeys.RED_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_white"), colorShulkerBox( - DyeColor.WHITE, - items.getOrThrow(ItemKeys.WHITE_SHULKER_BOX), - items - )); - provider.accept(Identifier.ofVanilla("shulker_box_coloring_yellow"), colorShulkerBox( - DyeColor.YELLOW, - items.getOrThrow(ItemKeys.YELLOW_SHULKER_BOX), - items - )); } @Override @@ -157,10 +72,6 @@ public String getName() { return "Recipes"; } - private static ItemColoringRecipe colorShulkerBox(DyeColor color, RegistryEntry result, RegistryEntryLookup items) { - return new ItemColoringRecipe(CraftingRecipeCategory.MISC, Ingredient.fromTag(items.getOrThrow(ItematicItemTags.SHULKER_BOXES)), color, new ItemStack(result)); - } - private static ShapelessRecipeBuilder shapelessRecipe(RecipeCategory category, RegistryEntry result) { return new ShapelessRecipeBuilder(new ItemStack(result), category); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/Assert.java b/src/gametest/java/net/errorcraft/itematic/gametest/Assert.java index 73178ad2..13d1b661 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/Assert.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/Assert.java @@ -44,6 +44,7 @@ public static void itemStackIsOf(ItemStack value, RegistryKey expected) { if (value == null) { throw new GameTestException("Expected item stack to be of " + expected + ", but the item stack was null"); } + if (!value.itematic$isOf(expected)) { throw new GameTestException("Expected item stack to be of " + expected + ", got " + value.itematic$key() + " instead"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/AnvilBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/AnvilBlockTestSuite.java index 3f56fb03..bb864064 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/AnvilBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/AnvilBlockTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class AnvilBlockTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.anvil") public void combiningEnchantedItemsWithSameIdInAnvilCombinesEnchantments(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/BeehiveBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/BeehiveBlockTestSuite.java index fbc32e44..d8617395 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/BeehiveBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/BeehiveBlockTestSuite.java @@ -10,7 +10,7 @@ import net.minecraft.world.GameMode; public class BeehiveBlockTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.beehive") public void breakingBeehiveWithHoneyInCreativeModeDropsBeehive(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java index 787390df..e5d74fb7 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/BrewingStandBlockTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class BrewingStandBlockTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.brewing_stand", tickLimit = 401) public void brewingWaterBottleWithNetherWartTurnsItIntoAwkwardPotion(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/CandleBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/CandleBlockTestSuite.java index 5a28bc15..5c0bdecc 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/CandleBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/CandleBlockTestSuite.java @@ -15,7 +15,7 @@ import net.minecraft.world.GameMode; public class CandleBlockTestSuite { - private static final BlockPos GROUND_POSITION = new BlockPos(1, 1, 1); + private static final BlockPos GROUND_POSITION = new BlockPos(1, 0, 1); private static final BlockPos PLACED_BLOCK_POSITION = GROUND_POSITION.add(0, 1, 0); @GameTest(templateName = "itematic:block.white_candle") diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/ComposterBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/ComposterBlockTestSuite.java index cadb611a..6f288616 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/ComposterBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/ComposterBlockTestSuite.java @@ -12,7 +12,7 @@ import net.minecraft.world.GameMode; public class ComposterBlockTestSuite { - private static final BlockPos COMPOSTER_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos COMPOSTER_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.composter.empty") public void usingCompostableItemOnComposterIncreasesLevel(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java index 61414e73..6c2a7470 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java @@ -28,7 +28,7 @@ import net.minecraft.world.GameMode; public class DispenserBehaviorTestSuite { - private static final BlockPos DISPENSER_POSITION = new BlockPos(2, 2, 3); + private static final BlockPos DISPENSER_POSITION = new BlockPos(2, 1, 3); private static final BlockPos BUTTON_POSITION = DISPENSER_POSITION.add(0, 1, 0); private static final BlockPos OUTPUT_POSITION = DISPENSER_POSITION.add(0, 0, -1); private static final BlockPos ABOVE_OUTPUT_POSITION = OUTPUT_POSITION.add(0, 1, 0); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/EnchantingTableTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/EnchantingTableTestSuite.java index efcca339..e176b5e5 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/EnchantingTableTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/EnchantingTableTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class EnchantingTableTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.enchanting_table") public void placingEnchantableItemWithoutEnchantmentsSuggestsEnchantments(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/GrindstoneTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/GrindstoneTestSuite.java index 81569b7f..f327500b 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/GrindstoneTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/GrindstoneTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class GrindstoneTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.grindstone") public void placingEnchantedItemInGrindstoneDisenchantsItem(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/PickBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/PickBlockTestSuite.java index 947a4292..59ca17a5 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/PickBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/PickBlockTestSuite.java @@ -9,7 +9,7 @@ import net.minecraft.util.math.BlockPos; public class PickBlockTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.piston_head") public void getPickStackOnPistonHeadGivesPistonItemStack(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/ShulkerBoxBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/ShulkerBoxBlockTestSuite.java index 4be7a6b4..5edad272 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/ShulkerBoxBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/ShulkerBoxBlockTestSuite.java @@ -10,7 +10,7 @@ import net.minecraft.world.GameMode; public class ShulkerBoxBlockTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos BLOCK_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.shulker_box") public void breakingShulkerBoxInCreativeModeDropsShulkerBox(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/WaterCauldronBlockTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/WaterCauldronBlockTestSuite.java index 0f0c1a5a..b47ea56d 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/WaterCauldronBlockTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/WaterCauldronBlockTestSuite.java @@ -14,7 +14,7 @@ import net.minecraft.world.GameMode; public class WaterCauldronBlockTestSuite { - private static final BlockPos WATER_CAULDRON_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos WATER_CAULDRON_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:block.water_cauldron") public void usingColoredShulkerBoxOnWaterCauldronClearsColor(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java index 94134bb7..b08c8849 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java @@ -13,7 +13,7 @@ import net.minecraft.util.math.BlockPos; public class PickEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnArmadilloGivesArmadilloSpawnEggItemStack(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/ArmadilloEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/ArmadilloEntityTestSuite.java index e7301edb..17ded874 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/ArmadilloEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/ArmadilloEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class ArmadilloEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingSpiderEyeTemptsArmadillo(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Armadillo was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Armadillo was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/AxolotlEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/AxolotlEntityTestSuite.java index b8cd3d7f..44ac7e82 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/AxolotlEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/AxolotlEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class AxolotlEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingTropicalFishBucketTemptsAxolotl(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Axolotl was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Axolotl was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/CamelEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/CamelEntityTestSuite.java index 2d61f88c..fbf88a25 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/CamelEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/CamelEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class CamelEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingCactusTemptsCamel(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Camel was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Camel was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/FrogEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/FrogEntityTestSuite.java index 46e7f9e8..4d45d647 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/FrogEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/FrogEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class FrogEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingSlimeBallTemptsFrog(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Frog was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Frog was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/GoatEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/GoatEntityTestSuite.java index 4133c844..45ec4d5a 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/GoatEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/GoatEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class GoatEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingWheatTemptsGoat(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Goat was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Goat was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/MooshroomEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/MooshroomEntityTestSuite.java index bf0faa02..d0d4196a 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/MooshroomEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/MooshroomEntityTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class MooshroomEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") public void usingFlowerOnBrownMooshroomGivesMooshroomSuspiciousEffects(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SheepEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SheepEntityTestSuite.java index 2fb31b61..42b9d0c4 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SheepEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SheepEntityTestSuite.java @@ -8,7 +8,7 @@ import net.minecraft.util.math.BlockPos; public class SheepEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("DataFlowIssue") diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SnifferEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SnifferEntityTestSuite.java index 13fffff3..59ce951c 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SnifferEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/SnifferEntityTestSuite.java @@ -18,7 +18,7 @@ import java.util.Optional; public class SnifferEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") @@ -34,6 +34,7 @@ public void holdingTorchflowerSeedsTemptsSniffer(TestContext context) { if (temptingPlayer.isEmpty()) { throw new GameTestException("Sniffer was not tempted by a player"); } + if (temptingPlayer.get() != player) { throw new GameTestException("Sniffer was not tempted by the expected player"); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/WolfEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/WolfEntityTestSuite.java index 0ff2ed48..de343d49 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/WolfEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/passive/WolfEntityTestSuite.java @@ -15,7 +15,7 @@ import net.minecraft.world.GameMode; public class WolfEntityTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:entity.platform") @SuppressWarnings("removal") diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java index 40d9197c..5432f4cf 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/BowTestSuite.java @@ -15,7 +15,7 @@ import net.minecraft.world.GameMode; public class BowTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:item.bow.platform") public void usingBowWithMultishotSpawnsMultipleArrows(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/BrushTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/BrushTestSuite.java index 6d470ed9..d7a9801a 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/BrushTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/BrushTestSuite.java @@ -13,7 +13,7 @@ import net.minecraft.world.GameMode; public class BrushTestSuite { - private static final BlockPos BLOCK_POSITION = new BlockPos(2, 1, 2); + private static final BlockPos BLOCK_POSITION = new BlockPos(2, 0, 2); @GameTest(templateName = "itematic:item.brush.platform") public void usingBrushDoesNotStartBrushing(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/FlowerPotItemTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/FlowerPotItemTestSuite.java index 38501bbb..b33ebe48 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/FlowerPotItemTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/FlowerPotItemTestSuite.java @@ -15,7 +15,7 @@ import net.minecraft.world.GameMode; public class FlowerPotItemTestSuite { - private static final BlockPos FLOWER_POT_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos FLOWER_POT_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:item.flower_pot.platform.flower_pot") public void usingOakSaplingOnFlowerPotReplacesFlowerPot(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java index f38ae275..b4fffa41 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java @@ -16,7 +16,7 @@ import net.minecraft.world.GameMode; public class LeadTestSuite { - private static final BlockPos PLACED_ENTITY_POSITION = new BlockPos(1, 2, 0); + private static final BlockPos PLACED_ENTITY_POSITION = new BlockPos(1, 1, 0); @GameTest(templateName = "itematic:item.lead.platform") public void usingLeadOnHorseLeashesHorse(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/SignTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/SignTestSuite.java index 84d6b52b..31ebf408 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/SignTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/SignTestSuite.java @@ -21,7 +21,7 @@ import net.minecraft.world.GameMode; public class SignTestSuite { - private static final BlockPos GROUND_POSITION = new BlockPos(1, 1, 0); + private static final BlockPos GROUND_POSITION = new BlockPos(1, 0, 0); private static final BlockPos PLACED_BLOCK_POSITION = GROUND_POSITION.add(0, 1, 0); private static final BlockPos ABOVE_PLACED_BLOCK_POSITION = PLACED_BLOCK_POSITION.add(0, 1, 0); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/BlockItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/BlockItemComponentTestSuite.java index 56dd493a..b5b97399 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/BlockItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/BlockItemComponentTestSuite.java @@ -18,7 +18,7 @@ import net.minecraft.world.GameMode; public class BlockItemComponentTestSuite { - private static final BlockPos GROUND_POSITION = new BlockPos(1, 1, 0); + private static final BlockPos GROUND_POSITION = new BlockPos(1, 0, 0); private static final BlockPos PLACED_BLOCK_POSITION = GROUND_POSITION.add(0, 1, 0); private static final BlockPos ABOVE_PLACED_BLOCK_POSITION = PLACED_BLOCK_POSITION.add(0, 1, 0); private static final BlockPos WALL_POSITION = GROUND_POSITION.add(0, 1, 1); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java index 023db35a..39f9bba7 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java @@ -12,7 +12,7 @@ import net.minecraft.util.math.BlockPos; public class ImmuneToDamageItemComponentTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) public void explodingNetherStarKeepsItemAlive(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java index aba87e9c..4d95c1a0 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ThrowableItemComponentTestSuite.java @@ -17,7 +17,7 @@ import net.minecraft.world.GameMode; public class ThrowableItemComponentTestSuite { - private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 1); + private static final BlockPos SPAWN_POSITION = new BlockPos(1, 1, 1); @GameTest(templateName = "itematic:item.component.throwable.platform") public void throwingEggSpawnsEggAtEyePosition(TestContext context) { diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java index 6a9f1df0..982307a4 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/UseableOnFluidItemComponentTestSuite.java @@ -18,8 +18,8 @@ import net.minecraft.world.GameMode; public class UseableOnFluidItemComponentTestSuite { - private static final BlockPos SPAWN_POSITION_ON_LAND = new BlockPos(2, 6, 0); - private static final BlockPos SPAWN_POSITION_IN_WATER = new BlockPos(2, 2, 2); + private static final BlockPos SPAWN_POSITION_ON_LAND = new BlockPos(2, 5, 0); + private static final BlockPos SPAWN_POSITION_IN_WATER = new BlockPos(2, 1, 2); private static final BlockPos LOOK_AT_WATER_POSITION_ON_LAND = SPAWN_POSITION_ON_LAND.add(0, -1, 1); private static final BlockPos ABOVE_LOOK_AT_WATER_POSITION_ON_LAND = LOOK_AT_WATER_POSITION_ON_LAND.add(0, 1, 0); private static final BlockPos LOOK_AT_AIR_POSITION_ON_LAND = SPAWN_POSITION_ON_LAND.add(0, 1, 4); diff --git a/src/main/generated/data/minecraft/item/black_bundle.json b/src/main/generated/data/minecraft/item/black_bundle.json new file mode 100644 index 00000000..639fb892 --- /dev/null +++ b/src/main/generated/data/minecraft/item/black_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:black_bundle", + "translation_key": "item.minecraft.black_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/blue_bundle.json b/src/main/generated/data/minecraft/item/blue_bundle.json new file mode 100644 index 00000000..d1044b57 --- /dev/null +++ b/src/main/generated/data/minecraft/item/blue_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:blue_bundle", + "translation_key": "item.minecraft.blue_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/brown_bundle.json b/src/main/generated/data/minecraft/item/brown_bundle.json new file mode 100644 index 00000000..c53fbc9b --- /dev/null +++ b/src/main/generated/data/minecraft/item/brown_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:brown_bundle", + "translation_key": "item.minecraft.brown_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/cyan_bundle.json b/src/main/generated/data/minecraft/item/cyan_bundle.json new file mode 100644 index 00000000..6c6ce372 --- /dev/null +++ b/src/main/generated/data/minecraft/item/cyan_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:cyan_bundle", + "translation_key": "item.minecraft.cyan_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/gray_bundle.json b/src/main/generated/data/minecraft/item/gray_bundle.json new file mode 100644 index 00000000..ad02750b --- /dev/null +++ b/src/main/generated/data/minecraft/item/gray_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:gray_bundle", + "translation_key": "item.minecraft.gray_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/green_bundle.json b/src/main/generated/data/minecraft/item/green_bundle.json new file mode 100644 index 00000000..3c2beb52 --- /dev/null +++ b/src/main/generated/data/minecraft/item/green_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:green_bundle", + "translation_key": "item.minecraft.green_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/honey_bottle.json b/src/main/generated/data/minecraft/item/honey_bottle.json index 684940e7..2eee4c37 100644 --- a/src/main/generated/data/minecraft/item/honey_bottle.json +++ b/src/main/generated/data/minecraft/item/honey_bottle.json @@ -5,6 +5,7 @@ "sound": "minecraft:item.honey_bottle.drink" }, "minecraft:food": { + "always_edible": true, "nutrition": 6, "saturation": 1.2 }, diff --git a/src/main/generated/data/minecraft/item/light_blue_bundle.json b/src/main/generated/data/minecraft/item/light_blue_bundle.json new file mode 100644 index 00000000..fb90b704 --- /dev/null +++ b/src/main/generated/data/minecraft/item/light_blue_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:light_blue_bundle", + "translation_key": "item.minecraft.light_blue_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/light_gray_bundle.json b/src/main/generated/data/minecraft/item/light_gray_bundle.json new file mode 100644 index 00000000..c7b15c6c --- /dev/null +++ b/src/main/generated/data/minecraft/item/light_gray_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:light_gray_bundle", + "translation_key": "item.minecraft.light_gray_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/lime_bundle.json b/src/main/generated/data/minecraft/item/lime_bundle.json new file mode 100644 index 00000000..8e6b01aa --- /dev/null +++ b/src/main/generated/data/minecraft/item/lime_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:lime_bundle", + "translation_key": "item.minecraft.lime_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/magenta_bundle.json b/src/main/generated/data/minecraft/item/magenta_bundle.json new file mode 100644 index 00000000..58251a85 --- /dev/null +++ b/src/main/generated/data/minecraft/item/magenta_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:magenta_bundle", + "translation_key": "item.minecraft.magenta_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/orange_bundle.json b/src/main/generated/data/minecraft/item/orange_bundle.json new file mode 100644 index 00000000..07e4bc24 --- /dev/null +++ b/src/main/generated/data/minecraft/item/orange_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:orange_bundle", + "translation_key": "item.minecraft.orange_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/pink_bundle.json b/src/main/generated/data/minecraft/item/pink_bundle.json new file mode 100644 index 00000000..42b497ad --- /dev/null +++ b/src/main/generated/data/minecraft/item/pink_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:pink_bundle", + "translation_key": "item.minecraft.pink_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/purple_bundle.json b/src/main/generated/data/minecraft/item/purple_bundle.json new file mode 100644 index 00000000..18ea0b71 --- /dev/null +++ b/src/main/generated/data/minecraft/item/purple_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:purple_bundle", + "translation_key": "item.minecraft.purple_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/red_bundle.json b/src/main/generated/data/minecraft/item/red_bundle.json new file mode 100644 index 00000000..cd13dd49 --- /dev/null +++ b/src/main/generated/data/minecraft/item/red_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:red_bundle", + "translation_key": "item.minecraft.red_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/white_bundle.json b/src/main/generated/data/minecraft/item/white_bundle.json new file mode 100644 index 00000000..61b2cd28 --- /dev/null +++ b/src/main/generated/data/minecraft/item/white_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:white_bundle", + "translation_key": "item.minecraft.white_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/wolf_armor.json b/src/main/generated/data/minecraft/item/wolf_armor.json index 1d1f5089..1688f83e 100644 --- a/src/main/generated/data/minecraft/item/wolf_armor.json +++ b/src/main/generated/data/minecraft/item/wolf_armor.json @@ -7,6 +7,7 @@ "toughness": 0.0 }, "minecraft:damageable": { + "break_sound": "minecraft:item.wolf_armor.break", "durability": 64 }, "minecraft:dyeable": { diff --git a/src/main/generated/data/minecraft/item/yellow_bundle.json b/src/main/generated/data/minecraft/item/yellow_bundle.json new file mode 100644 index 00000000..4155ed6d --- /dev/null +++ b/src/main/generated/data/minecraft/item/yellow_bundle.json @@ -0,0 +1,57 @@ +{ + "behavior": { + "minecraft:item_holder": { + "capacity": { + "denominator": 1, + "numerator": 1 + }, + "empty_sound": "minecraft:item.bundle.drop_contents", + "insert_item_sound": "minecraft:item.bundle.insert", + "remove_item_sound": "minecraft:item.bundle.remove_one", + "rules": [ + { + "type": "minecraft:reject", + "condition": { + "items": "#minecraft:banned_bundle_items" + } + }, + { + "type": "minecraft:occupancy_held_items_with_penalty", + "condition": { + "behavior": [ + "minecraft:item_holder" + ] + }, + "penalty": { + "denominator": 16, + "numerator": 1 + } + }, + { + "type": "minecraft:fraction", + "condition": { + "data_components": [ + "minecraft:bees" + ] + }, + "fraction": { + "denominator": 1, + "numerator": 1 + } + } + ] + }, + "minecraft:stackable": 1, + "minecraft:useable": { + "ticks": { + "type": "minecraft:constant", + "amount": 60 + } + } + }, + "display": { + "item_bar_style": "minecraft:bundle", + "model": "minecraft:yellow_bundle", + "translation_key": "item.minecraft.yellow_bundle" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json deleted file mode 100644 index 326550a8..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_black.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "black", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:black_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json deleted file mode 100644 index d33383dd..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_blue.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "blue", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:blue_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json deleted file mode 100644 index b324bfc4..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_brown.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "brown", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:brown_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json deleted file mode 100644 index 609f7012..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_cyan.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "cyan", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:cyan_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json deleted file mode 100644 index a0c4bee7..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_gray.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "gray", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:gray_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json deleted file mode 100644 index 3f33682b..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_green.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "green", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:green_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json deleted file mode 100644 index 845093f4..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_blue.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "light_blue", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:light_blue_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json deleted file mode 100644 index 30986be2..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_light_gray.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "light_gray", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:light_gray_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json deleted file mode 100644 index 4581d339..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_lime.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "lime", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:lime_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json deleted file mode 100644 index 26bb8956..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_magenta.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "magenta", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:magenta_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json deleted file mode 100644 index e854969a..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_orange.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "orange", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:orange_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json deleted file mode 100644 index 287a77b3..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_pink.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "pink", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:pink_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json deleted file mode 100644 index 7c48a7c2..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_purple.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "purple", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:purple_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json deleted file mode 100644 index 68f297c7..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_red.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "red", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:red_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json deleted file mode 100644 index b88de10d..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_white.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "white", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:white_shulker_box" -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json b/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json deleted file mode 100644 index e0b53054..00000000 --- a/src/main/generated/data/minecraft/recipes/shulker_box_coloring_yellow.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:item_coloring", - "category": "misc", - "color": "yellow", - "ingredient": "#minecraft:shulker_boxes", - "result": "minecraft:yellow_shulker_box" -} \ No newline at end of file diff --git a/src/main/java/net/errorcraft/itematic/Itematic.java b/src/main/java/net/errorcraft/itematic/Itematic.java index ba889cbd..0fddd7dc 100644 --- a/src/main/java/net/errorcraft/itematic/Itematic.java +++ b/src/main/java/net/errorcraft/itematic/Itematic.java @@ -15,7 +15,6 @@ import net.errorcraft.itematic.loot.context.ItematicLootContextTypes; import net.errorcraft.itematic.loot.function.ItematicItemModifierTypes; import net.errorcraft.itematic.loot.predicate.ItematicPredicateTypes; -import net.errorcraft.itematic.recipe.ItematicRecipeSerializers; import net.errorcraft.itematic.village.trade.modifier.TradeModifierTypes; import net.errorcraft.itematic.world.action.ActionTypes; import net.errorcraft.itematic.world.action.sequence.handler.SequenceHandlerTypes; @@ -35,7 +34,6 @@ public void onInitialize() { ItematicPredicateTypes.init(); ItematicLootContextParameters.init(); SmithingTemplateTypes.init(); - ItematicRecipeSerializers.init(); BlockPickerTypes.init(); ItematicItemModifierTypes.init(); TradeModifierTypes.init(); diff --git a/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java b/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java index 3ce09976..2bd8853e 100644 --- a/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/item/AnimalArmorItemTypeAccess.java @@ -8,8 +8,8 @@ public interface AnimalArmorItemTypeAccess { default RegistryEntry itematic$breakSound() { return null; - }; + } default RegistryEntryList> itematic$allowedEntities() { return null; - }; + } } diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java index 2cd31060..4252d5f1 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/MinecartEntityInitializer.java @@ -1,6 +1,5 @@ package net.errorcraft.itematic.entity.initializer.initializers; -import com.mojang.serialization.MapCodec; import net.errorcraft.itematic.entity.initializer.EntityInitializer; import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; @@ -8,6 +7,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.enums.RailShape; import net.minecraft.component.DataComponentTypes; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.vehicle.AbstractMinecartEntity; @@ -16,35 +16,47 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -public record MinecartEntityInitializer(EntityType type, Creator creator) implements EntityInitializer { +public record MinecartEntityInitializer(EntityType type) implements EntityInitializer { @Override public T create(ActionContext context, SpawnReason reason) { - return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET), context.stack()); - } - - public static MapCodec> createCodec(EntityType type, Creator creator) { - return MapCodec.unit(new MinecartEntityInitializer<>(type, creator)); - } - - private T create(ServerWorld world, BlockPos pos, ItemStack stack) { + ServerWorld world = context.world(); + BlockPos pos = context.blockPos(ActionContextParameter.TARGET); BlockState blockState = world.getBlockState(pos); if (!blockState.isIn(BlockTags.RAILS)) { return null; } + RailShape railShape = blockState.getBlock() instanceof AbstractRailBlock railBlock ? blockState.get(railBlock.getShapeProperty()) : RailShape.NORTH_SOUTH; double verticalOffset = railShape.isAscending() ? 0.5d : 0.0d; - T entity = this.creator.create(world, pos.getX() + 0.5d, pos.getY() + verticalOffset + 0.0625d, pos.getZ() + 0.5d); + ItemStack stack = context.stack(); + T entity = AbstractMinecartEntity.create( + world, + pos.getX() + 0.5d, + pos.getY() + verticalOffset + 0.0625d, + pos.getZ() + 0.5d, + this.type, + SpawnReason.SPAWN_ITEM_USE, + stack, + context.player(ActionContextParameter.THIS).orElse(null) + ); + if (entity == null) { + return null; + } + + if (AbstractMinecartEntity.areMinecartImprovementsEnabled(world)) { + for (Entity otherEntity : world.getOtherEntities(null, entity.getBoundingBox())) { + if (otherEntity instanceof AbstractMinecartEntity) { + return null; + } + } + } + Text customName = stack.get(DataComponentTypes.CUSTOM_NAME); if (customName != null) { entity.setCustomName(customName); } - return entity; - } - @FunctionalInterface - public interface Creator { - T create(World world, double x, double y, double z); + return entity; } } diff --git a/src/main/java/net/errorcraft/itematic/item/ItemKeys.java b/src/main/java/net/errorcraft/itematic/item/ItemKeys.java index 593379da..c7c05997 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemKeys.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemKeys.java @@ -937,6 +937,22 @@ public class ItemKeys { public static final RegistryKey COMPASS = register("compass"); public static final RegistryKey RECOVERY_COMPASS = register("recovery_compass"); public static final RegistryKey BUNDLE = register("bundle"); + public static final RegistryKey WHITE_BUNDLE = register("white_bundle"); + public static final RegistryKey ORANGE_BUNDLE = register("orange_bundle"); + public static final RegistryKey MAGENTA_BUNDLE = register("magenta_bundle"); + public static final RegistryKey LIGHT_BLUE_BUNDLE = register("light_blue_bundle"); + public static final RegistryKey YELLOW_BUNDLE = register("yellow_bundle"); + public static final RegistryKey LIME_BUNDLE = register("lime_bundle"); + public static final RegistryKey PINK_BUNDLE = register("pink_bundle"); + public static final RegistryKey GRAY_BUNDLE = register("gray_bundle"); + public static final RegistryKey LIGHT_GRAY_BUNDLE = register("light_gray_bundle"); + public static final RegistryKey CYAN_BUNDLE = register("cyan_bundle"); + public static final RegistryKey PURPLE_BUNDLE = register("purple_bundle"); + public static final RegistryKey BLUE_BUNDLE = register("blue_bundle"); + public static final RegistryKey BROWN_BUNDLE = register("brown_bundle"); + public static final RegistryKey GREEN_BUNDLE = register("green_bundle"); + public static final RegistryKey RED_BUNDLE = register("red_bundle"); + public static final RegistryKey BLACK_BUNDLE = register("black_bundle"); public static final RegistryKey FISHING_ROD = register("fishing_rod"); public static final RegistryKey CLOCK = register("clock"); public static final RegistryKey SPYGLASS = register("spyglass"); diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index d9725ed4..cc43c242 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -12,16 +12,11 @@ import net.errorcraft.itematic.fluid.FluidKeys; import net.errorcraft.itematic.item.color.colors.*; import net.errorcraft.itematic.item.component.ItemComponentSet; -import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.*; import net.errorcraft.itematic.item.dispense.behavior.DispenseBehavior; import net.errorcraft.itematic.item.dispense.behavior.DispenseBehaviors; import net.errorcraft.itematic.item.event.ItemEventMap; import net.errorcraft.itematic.item.event.ItemEvents; -import net.errorcraft.itematic.item.holder.rule.ItemHolderRules; -import net.errorcraft.itematic.item.holder.rule.rules.FractionItemHolderRule; -import net.errorcraft.itematic.item.holder.rule.rules.OccupancyHeldItemsWithPenaltyItemHolderRule; -import net.errorcraft.itematic.item.holder.rule.rules.RejectItemHolderRule; import net.errorcraft.itematic.item.pointer.Pointer; import net.errorcraft.itematic.item.pointer.PointerKeys; import net.errorcraft.itematic.item.shooter.method.methods.ChargeableShooterMethod; @@ -29,9 +24,7 @@ import net.errorcraft.itematic.item.smithing.template.SmithingTemplate; import net.errorcraft.itematic.item.smithing.template.SmithingTemplates; import net.errorcraft.itematic.loot.predicate.SideCheckPredicate; -import net.errorcraft.itematic.mixin.component.type.BundleContentsComponentAccessor; import net.errorcraft.itematic.mixin.item.BrushItemAccessor; -import net.errorcraft.itematic.mixin.item.BundleItemAccessor; import net.errorcraft.itematic.mixin.item.CrossbowItemAccessor; import net.errorcraft.itematic.potion.PotionKeys; import net.errorcraft.itematic.registry.ItematicRegistryKeys; @@ -64,7 +57,7 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.entity.projectile.SpectralArrowEntity; -import net.minecraft.entity.vehicle.*; +import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.fluid.Fluid; import net.minecraft.item.*; import net.minecraft.item.consume.UseAction; @@ -97,7 +90,6 @@ import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.biome.FoliageColors; import net.minecraft.world.event.GameEvent; -import org.apache.commons.lang3.math.Fraction; import java.util.List; @@ -5544,35 +5536,35 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.MINECART, MinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.CHEST_MINECART, create( ItemDisplay.Builder.forItem(ItemKeys.CHEST_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.CHEST_MINECART, ChestMinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.CHEST_MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.FURNACE_MINECART, create( ItemDisplay.Builder.forItem(ItemKeys.FURNACE_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.FURNACE_MINECART, FurnaceMinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.FURNACE_MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.TNT_MINECART, create( ItemDisplay.Builder.forItem(ItemKeys.TNT_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.TNT_MINECART, TntMinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.TNT_MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.HOPPER_MINECART, create( ItemDisplay.Builder.forItem(ItemKeys.HOPPER_MINECART).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.HOPPER_MINECART, HopperMinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.HOPPER_MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.COMMAND_BLOCK_MINECART, create( @@ -5581,7 +5573,7 @@ private void bootstrapEntities() { .build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.COMMAND_BLOCK_MINECART, CommandBlockMinecartEntity::new), this.dispenseBehaviors)) + .with(EntityItemComponent.from(new MinecartEntityInitializer<>(EntityType.COMMAND_BLOCK_MINECART), this.dispenseBehaviors)) .build() )); this.registerable.register(ItemKeys.OAK_BOAT, create( @@ -10525,26 +10517,135 @@ private void bootstrapMiscellaneous() { .itemBarStyle(ItemBarStyleKeys.BUNDLE) .build(), ItemComponentSet.builder() - .with(StackableItemComponent.of(1)) - .with(UseableItemComponent.builder() - .useFor(BundleItemAccessor.useDuration()) - .build()) - .with(ItemHolderItemComponent.of( - 1, - ItemHolderRules.builder() - .rule(RejectItemHolderRule.INSTANCE, ItemPredicate.Builder.create() - .itematic$items(this.items.getOrThrow(ItematicItemTags.BANNED_BUNDLE_ITEMS)) - .build()) - .rule(OccupancyHeldItemsWithPenaltyItemHolderRule.of(BundleContentsComponentAccessor.nestedBundleOccupancy()), ItemPredicate.Builder.create() - .itematic$behavior(ItemComponentTypes.ITEM_HOLDER) - .build()) - .rule(FractionItemHolderRule.of(Fraction.ONE), ItemPredicate.Builder.create() - .itematic$dataComponents(DataComponentTypes.BEES) - .build()) - .build(), - this.soundEvents.getOrThrow(SoundEventKeys.BUNDLE_INSERT), - this.soundEvents.getOrThrow(SoundEventKeys.BUNDLE_REMOVE_ONE), - this.soundEvents.getOrThrow(SoundEventKeys.BUNDLE_DROP_CONTENTS))) + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.WHITE_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.WHITE_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.ORANGE_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.ORANGE_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.MAGENTA_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.MAGENTA_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.LIGHT_BLUE_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.LIGHT_BLUE_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.YELLOW_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.YELLOW_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.LIME_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.LIME_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.PINK_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.PINK_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.GRAY_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.GRAY_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.LIGHT_GRAY_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.LIGHT_GRAY_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.CYAN_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.CYAN_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.PURPLE_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.PURPLE_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.BLUE_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.BLUE_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.BROWN_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.BROWN_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.GREEN_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.GREEN_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.RED_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.RED_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) + .build() + )); + this.registerable.register(ItemKeys.BLACK_BUNDLE, create( + ItemDisplay.Builder.forItem(ItemKeys.BLACK_BUNDLE) + .itemBarStyle(ItemBarStyleKeys.BUNDLE) + .build(), + ItemComponentSet.builder() + .with(ItemHolderItemComponent.of(this.items, this.soundEvents)) .build() )); this.registerable.register(ItemKeys.CLOCK, create( diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java index 68eb8dc6..5e1497ae 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ArmorItemComponent.java @@ -55,7 +55,7 @@ public static ItemComponent[] from(ArmorMaterial material, EquipmentType type public static ItemComponent[] fromDamageable(ArmorMaterial material, EquipmentType type, AnimalArmorItem.Type animalType) { return new ItemComponent[] { StackableItemComponent.of(1), - DamageableItemComponent.of(type.getMaxDamage(material.durability())), + DamageableItemComponent.of(type.getMaxDamage(material.durability()), animalType.itematic$breakSound()), EquipmentItemComponent.of(material, type, animalType), of(material, type) }; diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java index 69c3371c..0ba021c9 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EntityItemComponent.java @@ -16,7 +16,6 @@ import net.errorcraft.itematic.mixin.item.DecorationItemAccessor; import net.errorcraft.itematic.mixin.item.ItemAccessor; import net.errorcraft.itematic.mixin.item.SpawnEggItemAccessor; -import net.errorcraft.itematic.serialization.ItematicCodecs; import net.errorcraft.itematic.serialization.SetCodec; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.NbtComponent; diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java index 18945db4..85938433 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ItemHolderItemComponent.java @@ -4,12 +4,18 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.item.ItemStackConsumer; +import net.errorcraft.itematic.item.ItematicItemTags; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.holder.rule.ItemHolderRules; +import net.errorcraft.itematic.item.holder.rule.rules.FractionItemHolderRule; +import net.errorcraft.itematic.item.holder.rule.rules.OccupancyHeldItemsWithPenaltyItemHolderRule; +import net.errorcraft.itematic.item.holder.rule.rules.RejectItemHolderRule; +import net.errorcraft.itematic.mixin.component.type.BundleContentsComponentAccessor; import net.errorcraft.itematic.mixin.item.BundleItemAccessor; import net.errorcraft.itematic.serialization.ItematicCodecs; +import net.errorcraft.itematic.sound.SoundEventKeys; import net.minecraft.component.ComponentMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.BundleContentsComponent; @@ -17,10 +23,13 @@ import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsage; import net.minecraft.item.tooltip.BundleTooltipData; import net.minecraft.item.tooltip.TooltipData; +import net.minecraft.predicate.item.ItemPredicate; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.screen.slot.Slot; import net.minecraft.sound.SoundEvent; @@ -48,6 +57,32 @@ public static ItemHolderItemComponent of(int capacity, ItemHolderRules rules, Re return new ItemHolderItemComponent(Fraction.getFraction(capacity, 1), rules, insertItemSound, removeItemSound, emptySound); } + public static ItemComponent[] of(RegistryEntryLookup items, RegistryEntryLookup soundEvents) { + return new ItemComponent[] { + StackableItemComponent.of(1), + UseableItemComponent.builder() + .useFor(BundleItemAccessor.useDuration()) + .build(), + of( + 1, + ItemHolderRules.builder() + .rule(RejectItemHolderRule.INSTANCE, ItemPredicate.Builder.create() + .itematic$items(items.getOrThrow(ItematicItemTags.BANNED_BUNDLE_ITEMS)) + .build()) + .rule(OccupancyHeldItemsWithPenaltyItemHolderRule.of(BundleContentsComponentAccessor.nestedBundleOccupancy()), ItemPredicate.Builder.create() + .itematic$behavior(ItemComponentTypes.ITEM_HOLDER) + .build()) + .rule(FractionItemHolderRule.of(Fraction.ONE), ItemPredicate.Builder.create() + .itematic$dataComponents(DataComponentTypes.BEES) + .build()) + .build(), + soundEvents.getOrThrow(SoundEventKeys.BUNDLE_INSERT), + soundEvents.getOrThrow(SoundEventKeys.BUNDLE_REMOVE_ONE), + soundEvents.getOrThrow(SoundEventKeys.BUNDLE_DROP_CONTENTS) + ) + }; + } + @Override public ItemComponentType type() { return ItemComponentTypes.ITEM_HOLDER; diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java index 899020ff..494ac5bb 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ProjectileItemComponent.java @@ -81,7 +81,7 @@ public Entity createEntity(World world, Position position, ItemStack stack, floa } public Entity createEntity(ActionContext context, ActionContextParameter position, float angleOffset, float speed, float uncertainty) { - Entity entity = this.entity.create(context, SpawnReason.SPAWN_EGG); + Entity entity = this.entity.create(context, SpawnReason.SPAWN_ITEM_USE); if (entity == null) { return null; } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java index a12e8543..7417d08e 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/SpawnEggItemComponent.java @@ -27,6 +27,15 @@ public record SpawnEggItemComponent() implements ItemComponent CODEC = Codec.unit(INSTANCE); + public static ItemComponent[] from(RegistryEntry> entity, int primaryColor, int secondaryColor, RegistryEntryLookup dispenseBehaviors) { + return new ItemComponent[] { + EntityItemComponent.of(SimpleEntityInitializer.of(entity.value()), true, EntityItemComponent.Pass.BLOCK, EntityItemComponent.Pass.FLUID), + INSTANCE, + TintedItemComponent.of(IndexItemColor.of(primaryColor, secondaryColor)), + DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.SPAWN_ENTITY_FROM_ITEM)) + }; + } + @Override public ItemComponentType type() { return ItemComponentTypes.SPAWN_EGG; @@ -42,40 +51,36 @@ public Optional spawnBaby(PlayerEntity user, MobEntity entity, Entity if (entityItemComponent.isEmpty()) { return Optional.empty(); } + if (entityItemComponent.get().getEntityInitializer(stack).type() != entityType) { return Optional.empty(); } + MobEntity mobEntity = this.createEntity(entity, entityType, world); if (mobEntity == null) { return Optional.empty(); } + if (!mobEntity.itematic$trySetBaby(true)) { return Optional.empty(); } + mobEntity.refreshPositionAfterTeleport(pos); Text customName = stack.get(DataComponentTypes.CUSTOM_NAME); if (customName != null) { mobEntity.setCustomName(customName); } + world.spawnEntityAndPassengers(mobEntity); stack.decrementUnlessCreative(1, user); return Optional.of(mobEntity); } - public static ItemComponent[] from(RegistryEntry> entity, int primaryColor, int secondaryColor, RegistryEntryLookup dispenseBehaviors) { - return new ItemComponent[] { - EntityItemComponent.of(SimpleEntityInitializer.of(entity.value()), true, EntityItemComponent.Pass.BLOCK, EntityItemComponent.Pass.FLUID), - INSTANCE, - TintedItemComponent.of(IndexItemColor.of(primaryColor, secondaryColor)), - DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.SPAWN_ENTITY_FROM_ITEM)) - }; - } - private MobEntity createEntity(MobEntity entity, EntityType entityType, ServerWorld world) { if (entity instanceof PassiveEntity passiveEntity) { return passiveEntity.createChild(world, passiveEntity); } - return entityType.create(world, SpawnReason.SPAWN_EGG); + return entityType.create(world, SpawnReason.SPAWN_ITEM_USE); } } diff --git a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java index 68361cd5..193031e1 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/EntityPlacer.java @@ -55,7 +55,7 @@ public EntityPlacer(ItemStack stack, ItemStackConsumer resultStackConsumer, Worl public static EntityPlacer spawned(ItemUsageContext context, ItemStack stack, ItemStackConsumer resultStackConsumer, EntityItemComponent entityItemComponent) { World world = context.getWorld(); BlockPos blockPos = context.getBlockPos(); - return new EntityPlacer(context.getStack(), resultStackConsumer, world, blockPos, world.getBlockState(blockPos), context.getPlayer(), entityItemComponent.getEntityInitializer(stack), context.getSide(), true, SpawnReason.SPAWN_EGG, null, entityItemComponent.allowItemData(), context.getHand()); + return new EntityPlacer(context.getStack(), resultStackConsumer, world, blockPos, world.getBlockState(blockPos), context.getPlayer(), entityItemComponent.getEntityInitializer(stack), context.getSide(), true, SpawnReason.SPAWN_ITEM_USE, null, entityItemComponent.allowItemData(), context.getHand()); } public static EntityPlacer action(ActionContext context, ActionContextParameter position, EntityItemComponent entityItemComponent) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java index a8bb908a..8a5ef05b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java @@ -93,7 +93,7 @@ private static EntityType.Builder setChestBoatEntityInitializer ) ) private static EntityType.Builder setMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(MinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -112,7 +112,7 @@ private static EntityType.Builder setMinecartInitializerCodec(En ) ) private static EntityType.Builder setChestMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(ChestMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -131,7 +131,7 @@ private static EntityType.Builder setChestMinecartInitializ ) ) private static EntityType.Builder setFurnaceMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(FurnaceMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -150,7 +150,7 @@ private static EntityType.Builder setFurnaceMinecartIniti ) ) private static EntityType.Builder setTntMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(TntMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -169,7 +169,7 @@ private static EntityType.Builder setTntMinecartInitializerCo ) ) private static EntityType.Builder setSpawnerMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(SpawnerMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -188,7 +188,7 @@ private static EntityType.Builder setSpawnerMinecartIniti ) ) private static EntityType.Builder setHopperMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(HopperMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -207,7 +207,7 @@ private static EntityType.Builder setHopperMinecartInitial ) ) private static EntityType.Builder setCommandBlockMinecartInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(minecartInitializerCodecCreator(CommandBlockMinecartEntity::new)); + type.itematic$initializerCodec(minecartInitializerCodecCreator()); return type; } @@ -475,8 +475,8 @@ private void createUseEntityInitializerIfPresent(World world, SpawnReason reason } @Unique - private static EntityInitializerCodecCreator minecartInitializerCodecCreator(MinecartEntityInitializer.Creator creator) { - return type -> MinecartEntityInitializer.createCodec(type, creator); + private static EntityInitializerCodecCreator minecartInitializerCodecCreator() { + return type -> MapCodec.unit(new MinecartEntityInitializer<>(type)); } @Unique diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractMinecartEntityExtender.java deleted file mode 100644 index 31e3d154..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractMinecartEntityExtender.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.errorcraft.itematic.mixin.entity.vehicle; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.vehicle.AbstractMinecartEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryKey; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(AbstractMinecartEntity.class) -public abstract class AbstractMinecartEntityExtender extends Entity { - @Shadow - public abstract AbstractMinecartEntity.Type getMinecartType(); - - public AbstractMinecartEntityExtender(EntityType type, World world) { - super(type, world); - } - - @Redirect( - method = "getPickBlockStack", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - public ItemStack newItemStackUseCreateStack(ItemConvertible item) { - return this.getWorld().itematic$createStack(this.asPickBlockItemKey()); - } - - @Unique - private RegistryKey asPickBlockItemKey() { - return switch (this.getMinecartType()) { - case FURNACE -> ItemKeys.FURNACE_MINECART; - case CHEST -> ItemKeys.CHEST_MINECART; - case TNT -> ItemKeys.TNT_MINECART; - case HOPPER -> ItemKeys.HOPPER_MINECART; - case COMMAND_BLOCK -> ItemKeys.COMMAND_BLOCK_MINECART; - default -> ItemKeys.MINECART; - }; - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestMinecartEntityExtender.java index b6ccac73..c2e3d944 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestMinecartEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestMinecartEntityExtender.java @@ -4,9 +4,13 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.vehicle.ChestMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(ChestMinecartEntity.class) public abstract class ChestMinecartEntityExtender extends VehicleEntityExtender { @@ -14,6 +18,17 @@ public ChestMinecartEntityExtender(EntityType type, World world) { super(type, world); } + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForChestMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.CHEST_MINECART); + } + @Override protected RegistryKey asItemKey() { return ItemKeys.CHEST_MINECART; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/CommandBlockMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/CommandBlockMinecartEntityExtender.java new file mode 100644 index 00000000..9a6b01d0 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/CommandBlockMinecartEntityExtender.java @@ -0,0 +1,30 @@ +package net.errorcraft.itematic.mixin.entity.vehicle; + +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.vehicle.AbstractMinecartEntity; +import net.minecraft.entity.vehicle.CommandBlockMinecartEntity; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(CommandBlockMinecartEntity.class) +public abstract class CommandBlockMinecartEntityExtender extends AbstractMinecartEntity { + protected CommandBlockMinecartEntityExtender(EntityType entityType, World world) { + super(entityType, world); + } + + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForCommandBlockMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.COMMAND_BLOCK_MINECART); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java index 15ddeb7d..f9d1c13d 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/FurnaceMinecartEntityExtender.java @@ -4,9 +4,13 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.vehicle.FurnaceMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(FurnaceMinecartEntity.class) public abstract class FurnaceMinecartEntityExtender extends VehicleEntityExtender { @@ -14,6 +18,17 @@ public FurnaceMinecartEntityExtender(EntityType type, World world) { super(type, world); } + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForFurnaceMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.FURNACE_MINECART); + } + @Override protected RegistryKey asItemKey() { return ItemKeys.FURNACE_MINECART; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/HopperMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/HopperMinecartEntityExtender.java index 00660ebb..911184da 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/HopperMinecartEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/HopperMinecartEntityExtender.java @@ -4,9 +4,13 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.vehicle.HopperMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(HopperMinecartEntity.class) public abstract class HopperMinecartEntityExtender extends VehicleEntityExtender { @@ -14,6 +18,17 @@ public HopperMinecartEntityExtender(EntityType type, World world) { super(type, world); } + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForHopperMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.HOPPER_MINECART); + } + @Override protected RegistryKey asItemKey() { return ItemKeys.HOPPER_MINECART; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/MinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/MinecartEntityExtender.java new file mode 100644 index 00000000..4dfbd9a7 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/MinecartEntityExtender.java @@ -0,0 +1,30 @@ +package net.errorcraft.itematic.mixin.entity.vehicle; + +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.vehicle.AbstractMinecartEntity; +import net.minecraft.entity.vehicle.MinecartEntity; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(MinecartEntity.class) +public abstract class MinecartEntityExtender extends AbstractMinecartEntity { + protected MinecartEntityExtender(EntityType entityType, World world) { + super(entityType, world); + } + + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.MINECART); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/SpawnerMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/SpawnerMinecartEntityExtender.java new file mode 100644 index 00000000..846a1913 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/SpawnerMinecartEntityExtender.java @@ -0,0 +1,30 @@ +package net.errorcraft.itematic.mixin.entity.vehicle; + +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.vehicle.AbstractMinecartEntity; +import net.minecraft.entity.vehicle.SpawnerMinecartEntity; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(SpawnerMinecartEntity.class) +public abstract class SpawnerMinecartEntityExtender extends AbstractMinecartEntity { + protected SpawnerMinecartEntityExtender(EntityType entityType, World world) { + super(entityType, world); + } + + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.MINECART); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/TntMinecartEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/TntMinecartEntityExtender.java index 7e4b21f1..128a6d47 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/TntMinecartEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/TntMinecartEntityExtender.java @@ -4,9 +4,13 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.vehicle.TntMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(TntMinecartEntity.class) public abstract class TntMinecartEntityExtender extends VehicleEntityExtender { @@ -14,6 +18,17 @@ public TntMinecartEntityExtender(EntityType type, World world) { super(type, world); } + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackForTntMinecartUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(ItemKeys.TNT_MINECART); + } + @Override protected RegistryKey asItemKey() { return ItemKeys.TNT_MINECART; diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java index 557e2305..76b5f6bc 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/RawShapedRecipeExtender.java @@ -39,8 +39,8 @@ public abstract class RawShapedRecipeExtender implements RawShapedRecipeAccess { public DefaultedList itematic$remainder(CraftingRecipeInput input) { boolean actuallyMirrored = !this.symmetrical && this.matches(input, true); DefaultedList remainders = DefaultedList.ofSize(input.size(), ItemStack.EMPTY); - for(int y = 0; y < this.height; y++) { - for(int x = 0; x < this.width; x++) { + for (int y = 0; y < this.height; y++) { + for (int x = 0; x < this.width; x++) { int index = actuallyMirrored ? this.width - x - 1 + y * this.width : x + y * this.width; diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java index 24b47fc7..a87bb625 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java @@ -16,7 +16,7 @@ public class SmithingTransformRecipeExtender { ItemStack result; @Redirect( - method = "craft", + method = "craft(Lnet/minecraft/recipe/input/SmithingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;copyComponentsToNewStack(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/item/ItemStack;" diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java new file mode 100644 index 00000000..1a3f2da6 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java @@ -0,0 +1,30 @@ +package net.errorcraft.itematic.mixin.recipe; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.TransmuteRecipe; +import net.minecraft.registry.entry.RegistryEntry; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(TransmuteRecipe.class) +public class TransmuteRecipeExtender { + @Shadow + @Final + RegistryEntry result; + + @Redirect( + method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;copyComponentsToNewStack(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/item/ItemStack;" + ) + ) + private ItemStack copyComponentsToNewStackUseRegistryEntry(ItemStack instance, ItemConvertible item, int count) { + return instance.itematic$copyComponentsToNewStack(this.result, count); + } +} diff --git a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java b/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java deleted file mode 100644 index 23d64e6e..00000000 --- a/src/main/java/net/errorcraft/itematic/recipe/ItemColoringRecipe.java +++ /dev/null @@ -1,129 +0,0 @@ -package net.errorcraft.itematic.recipe; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.errorcraft.itematic.item.component.components.DyeItemComponent; -import net.errorcraft.itematic.network.codec.PacketCodecUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.CraftingRecipe; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.IngredientPlacement; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.book.CraftingRecipeCategory; -import net.minecraft.recipe.input.CraftingRecipeInput; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.entry.RegistryFixedCodec; -import net.minecraft.util.DyeColor; -import net.minecraft.world.World; - -public record ItemColoringRecipe(CraftingRecipeCategory category, Ingredient ingredient, DyeColor color, ItemStack result) implements CraftingRecipe { - @Override - public CraftingRecipeCategory getCategory() { - return this.category; - } - - @Override - public boolean matches(CraftingRecipeInput input, World world) { - boolean foundIngredient = false; - boolean foundColor = false; - for (int i = 0; i < input.size(); i++) { - ItemStack stack = input.getStackInSlot(i); - if (stack.isEmpty()) { - continue; - } - - if (this.ingredient.test(stack)) { - if (foundIngredient) { - return false; - } - - foundIngredient = true; - continue; - } - - if (this.isExpectedColor(stack)) { - if (foundColor) { - return false; - } - - foundColor = true; - continue; - } - - return false; - } - - return foundIngredient && foundColor; - } - - @Override - public ItemStack craft(CraftingRecipeInput input, RegistryWrapper.WrapperLookup lookup) { - for (int i = 0; i < input.size(); i++) { - ItemStack stack = input.getStackInSlot(i); - if (!this.ingredient.test(stack)) { - continue; - } - - return stack.itematic$copyComponentsToNewStack(this.result.getRegistryEntry(), 1); - } - - return ItemStack.EMPTY; - } - - @Override - public boolean fits(int width, int height) { - return width * height >= 2; - } - - @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup wrapperLookup) { - return this.result; - } - - @Override - public RecipeSerializer getSerializer() { - return ItematicRecipeSerializers.ITEM_COLORING; - } - - @Override - public IngredientPlacement getIngredientPlacement() { - return IngredientPlacement.NONE; - } - - private boolean isExpectedColor(ItemStack stack) { - return stack.itematic$getBehavior(ItemComponentTypes.DYE) - .map(DyeItemComponent::color) - .map(color -> this.color == color) - .orElse(false); - } - - public static class Serializer implements RecipeSerializer { - private static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - CraftingRecipeCategory.CODEC.fieldOf("category").orElse(CraftingRecipeCategory.MISC).forGetter(ItemColoringRecipe::category), - Ingredient.CODEC.fieldOf("ingredient").forGetter(ItemColoringRecipe::ingredient), - DyeColor.CODEC.fieldOf("color").forGetter(ItemColoringRecipe::color), - RegistryFixedCodec.of(RegistryKeys.ITEM).fieldOf("result").xmap(ItemStack::new, ItemStack::getRegistryEntry).forGetter(ItemColoringRecipe::result) - ).apply(instance, ItemColoringRecipe::new)); - private static final PacketCodec PACKET_CODEC = PacketCodecUtil.tuple( - CraftingRecipeCategory.PACKET_CODEC, ItemColoringRecipe::category, - Ingredient.PACKET_CODEC, ItemColoringRecipe::ingredient, - DyeColor.PACKET_CODEC, ItemColoringRecipe::color, - ItemStack.PACKET_CODEC, ItemColoringRecipe::result, - ItemColoringRecipe::new - ); - - @Override - public MapCodec codec() { - return CODEC; - } - - @Override - public PacketCodec packetCodec() { - return PACKET_CODEC; - } - } -} diff --git a/src/main/java/net/errorcraft/itematic/recipe/ItematicRecipeSerializers.java b/src/main/java/net/errorcraft/itematic/recipe/ItematicRecipeSerializers.java deleted file mode 100644 index fa0467e2..00000000 --- a/src/main/java/net/errorcraft/itematic/recipe/ItematicRecipeSerializers.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.errorcraft.itematic.recipe; - -import net.minecraft.recipe.RecipeSerializer; - -public class ItematicRecipeSerializers { - public static final RecipeSerializer ITEM_COLORING = RecipeSerializer.register("item_coloring", new ItemColoringRecipe.Serializer()); - - private ItematicRecipeSerializers() {} - - public static void init() {} -} diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 6309fb8d..189e6f5c 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -239,12 +239,14 @@ "entity.projectile.thrown.ThrownItemEntityExtender", "entity.raid.RaiderEntityExtender", "entity.raid.RaiderEntityExtender$PickUpBannerAsLeaderGoalExtender", - "entity.vehicle.AbstractMinecartEntityExtender", "entity.vehicle.BoatEntityExtender", "entity.vehicle.ChestBoatEntityExtender", "entity.vehicle.ChestMinecartEntityExtender", + "entity.vehicle.CommandBlockMinecartEntityExtender", "entity.vehicle.FurnaceMinecartEntityExtender", "entity.vehicle.HopperMinecartEntityExtender", + "entity.vehicle.MinecartEntityExtender", + "entity.vehicle.SpawnerMinecartEntityExtender", "entity.vehicle.TntMinecartEntityExtender", "entity.vehicle.VehicleEntityExtender", "fluid.EmptyFluidExtender", @@ -333,6 +335,7 @@ "recipe.SmokingRecipeExtender", "recipe.StonecuttingRecipeExtender", "recipe.TippedArrowRecipeExtender", + "recipe.TransmuteRecipeExtender", "registry.BuiltinRegistriesExtender", "registry.RegistriesAccessor", "registry.RegistriesExtender", From 88a1367e7e19b27cbb0c120cd7769d70b34d45e1 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Fri, 6 Feb 2026 03:50:44 +0100 Subject: [PATCH 07/11] Port to 24w39a --- gradle.properties | 6 +- .../render/ItematicTexturedRenderLayers.java | 28 --- .../CreativeInventoryScreenExtender.java | 8 +- .../model/BakedModelManagerExtender.java | 34 --- .../resources/itematic.client.mixins.json | 1 - .../itematic/data/ItematicData.java | 2 - .../itematic/data/client/AtlasProvider.java | 30 --- .../data/server/tag/ItemTagProvider.java | 18 ++ .../block/DispenserBehaviorTestSuite.java | 3 +- .../gametest/entity/PickEntityTestSuite.java | 198 +++++++++++++++--- .../itematic/gametest/item/LeadTestSuite.java | 6 +- .../item/TotemOfUndyingTestSuite.java | 2 +- .../ImmuneToDamageItemComponentTestSuite.java | 12 +- .../LifeSavingItemComponentTestSuite.java | 4 +- .../WeaponItemComponentTestSuite.java | 8 +- .../minecraft/atlases/armor_materials.json | 22 -- .../data/minecraft/item/acacia_boat.json | 3 +- .../minecraft/item/acacia_chest_boat.json | 3 +- .../minecraft/item/bamboo_chest_raft.json | 3 +- .../data/minecraft/item/bamboo_raft.json | 3 +- .../data/minecraft/item/birch_boat.json | 3 +- .../data/minecraft/item/birch_chest_boat.json | 3 +- .../data/minecraft/item/cherry_boat.json | 3 +- .../minecraft/item/cherry_chest_boat.json | 3 +- .../data/minecraft/item/dark_oak_boat.json | 3 +- .../minecraft/item/dark_oak_chest_boat.json | 3 +- .../data/minecraft/item/jungle_boat.json | 3 +- .../minecraft/item/jungle_chest_boat.json | 3 +- .../data/minecraft/item/mangrove_boat.json | 3 +- .../minecraft/item/mangrove_chest_boat.json | 3 +- .../data/minecraft/item/oak_boat.json | 3 +- .../data/minecraft/item/oak_chest_boat.json | 3 +- .../data/minecraft/item/spruce_boat.json | 3 +- .../minecraft/item/spruce_chest_boat.json | 3 +- .../data/minecraft/item/trident.json | 3 +- .../tools_and_utilities.json | 5 +- .../tags/item/item_group/bundles.json | 21 ++ .../itematic/access/entity/EntityAccess.java | 13 +- .../component/ItematicDataComponentTypes.java | 1 - .../type/ImmuneToDamageComponent.java | 21 -- .../initializers/BoatEntityInitializer.java | 35 ---- .../ChestBoatEntityInitializer.java | 36 ---- .../TridentEntityInitializer.java | 15 +- .../errorcraft/itematic/item/ItemUtil.java | 39 ++-- .../itematic/item/ItematicItemTags.java | 1 + .../ImmuneToDamageItemComponent.java | 6 +- .../components/PotionItemComponent.java | 20 +- .../provider/ItemGroupEntryProviders.java | 2 +- .../mixin/datafixer/SchemasExtender.java | 26 +++ .../itematic/mixin/entity/EntityExtender.java | 25 +-- .../mixin/entity/EntityTypeExtender.java | 38 ---- .../entity/FallingBlockEntityExtender.java | 7 +- .../mixin/entity/LeashableExtender.java | 7 +- .../ai/brain/task/FarmerWorkTaskExtender.java | 4 +- .../entity/boss/WitherEntityExtender.java | 7 +- .../decoration/PaintingEntityExtender.java | 7 +- .../entity/mob/CreeperEntityExtender.java | 7 +- .../entity/mob/SkeletonEntityExtender.java | 7 +- .../mob/WitherSkeletonEntityExtender.java | 7 +- .../passive/AbstractDonkeyEntityExtender.java | 7 +- .../entity/passive/PigEntityExtender.java | 7 +- .../entity/passive/StriderEntityExtender.java | 7 +- .../entity/passive/TurtleEntityExtender.java | 7 +- .../passive/VillagerEntityExtender.java | 2 +- .../vehicle/AbstractBoatEntityExtender.java | 52 +++++ .../entity/vehicle/BoatEntityExtender.java | 50 ----- .../vehicle/ChestBoatEntityExtender.java | 32 --- .../mixin/item/ItemStackExtender.java | 12 -- ...ToDamageToDamageResistantComponentFix.java | 24 +++ src/main/resources/itematic.mixins.json | 4 +- 70 files changed, 450 insertions(+), 550 deletions(-) delete mode 100644 src/client/java/net/errorcraft/itematic/client/render/ItematicTexturedRenderLayers.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/render/model/BakedModelManagerExtender.java delete mode 100644 src/datagen/java/net/errorcraft/itematic/data/client/AtlasProvider.java delete mode 100644 src/main/generated/assets/minecraft/atlases/armor_materials.json create mode 100644 src/main/generated/data/minecraft/tags/item/item_group/bundles.json delete mode 100644 src/main/java/net/errorcraft/itematic/component/type/ImmuneToDamageComponent.java delete mode 100644 src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java delete mode 100644 src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/datafixer/SchemasExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractBoatEntityExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/util/datafix/fixes/ImmuneToDamageToDamageResistantComponentFix.java diff --git a/gradle.properties b/gradle.properties index 39f0424b..79fed29d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w38a - yarn_mappings=24w38a+build.6 + minecraft_version=24w39a + yarn_mappings=24w39a+build.8 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.105.0+1.21.2 + fabric_version=0.105.1+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/client/render/ItematicTexturedRenderLayers.java b/src/client/java/net/errorcraft/itematic/client/render/ItematicTexturedRenderLayers.java deleted file mode 100644 index dfade30b..00000000 --- a/src/client/java/net/errorcraft/itematic/client/render/ItematicTexturedRenderLayers.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.errorcraft.itematic.client.render; - -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.texture.atlas.AtlasSource; -import net.minecraft.client.texture.atlas.DirectoryAtlasSource; -import net.minecraft.client.texture.atlas.SingleAtlasSource; -import net.minecraft.util.Identifier; - -import java.util.List; -import java.util.Optional; -import java.util.function.BiConsumer; - -public class ItematicTexturedRenderLayers { - public static final Identifier ARMOR_MATERIALS_ID = Identifier.ofVanilla("armor_materials"); - public static final Identifier ARMOR_MATERIALS_ATLAS_TEXTURE = Identifier.ofVanilla("textures/atlas/armor_materials.png"); - public static final RenderLayer ARMOR_MATERIAL_RENDER_LAYER = RenderLayer.getArmorCutoutNoCull(ARMOR_MATERIALS_ATLAS_TEXTURE); - - private ItematicTexturedRenderLayers() {} - - public static void bootstrap(BiConsumer> provider) { - provider.accept(ARMOR_MATERIALS_ID, List.of( - new DirectoryAtlasSource("models/armor", "models/armor/"), - new DirectoryAtlasSource("entity/horse/armor", "entity/horse/armor/"), - new SingleAtlasSource(Identifier.ofVanilla("entity/wolf/wolf_armor"), Optional.empty()), - new SingleAtlasSource(Identifier.ofVanilla("entity/wolf/wolf_armor_overlay"), Optional.empty()) - )); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java index 2a2222f2..e76f7025 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/CreativeInventoryScreenExtender.java @@ -6,8 +6,8 @@ import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; +import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; @@ -27,9 +27,9 @@ import java.util.stream.Stream; @Mixin(CreativeInventoryScreen.class) -public abstract class CreativeInventoryScreenExtender extends AbstractInventoryScreen { - public CreativeInventoryScreenExtender(CreativeInventoryScreen.CreativeScreenHandler screenHandler, PlayerInventory playerInventory, Text text) { - super(screenHandler, playerInventory, text); +public abstract class CreativeInventoryScreenExtender extends HandledScreen { + public CreativeInventoryScreenExtender(CreativeInventoryScreen.CreativeScreenHandler handler, PlayerInventory inventory, Text title) { + super(handler, inventory, title); } @Definition(id = "getCreativeHotbarStorage", method = "Lnet/minecraft/client/MinecraftClient;getCreativeHotbarStorage()Lnet/minecraft/client/option/HotbarStorage;") diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/BakedModelManagerExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/model/BakedModelManagerExtender.java deleted file mode 100644 index ce1006f5..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/model/BakedModelManagerExtender.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.errorcraft.itematic.mixin.client.render.model; - -import com.google.common.collect.ImmutableMap; -import net.errorcraft.itematic.client.render.ItematicTexturedRenderLayers; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Map; - -@Mixin(BakedModelManager.class) -public class BakedModelManagerExtender { - @Shadow - @Final - @Mutable - private static Map LAYERS_TO_LOADERS; - - @Inject( - method = "", - at = @At("TAIL") - ) - private static void addCustomLayersToLoaders(CallbackInfo info) { - LAYERS_TO_LOADERS = new ImmutableMap.Builder() - .putAll(LAYERS_TO_LOADERS) - .put(ItematicTexturedRenderLayers.ARMOR_MATERIALS_ATLAS_TEXTURE, ItematicTexturedRenderLayers.ARMOR_MATERIALS_ID) - .build(); - } -} diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index 7190f224..d5d09006 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -59,7 +59,6 @@ "render.item.BuiltinModelItemRendererExtender", "render.item.HeldItemRendererExtender", "render.item.ItemRendererExtender", - "render.model.BakedModelManagerExtender", "render.model.json.ModelOverrideListExtender", "toast.RecipeToastExtender", "tutorial.CraftPlanksTutorialStepHandlerExtender", diff --git a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java index c2445dad..940d5d07 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java +++ b/src/datagen/java/net/errorcraft/itematic/data/ItematicData.java @@ -1,6 +1,5 @@ package net.errorcraft.itematic.data; -import net.errorcraft.itematic.data.client.AtlasProvider; import net.errorcraft.itematic.data.client.ItemBarStyleProvider; import net.errorcraft.itematic.data.server.RecipeProvider; import net.errorcraft.itematic.data.server.registry.*; @@ -21,7 +20,6 @@ public void addJsonKeySortOrders(JsonKeySortOrderCallback callback) { public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); pack.addProvider(ItemProvider::new); - pack.addProvider(AtlasProvider::new); pack.addProvider(ItemTagProvider::new); pack.addProvider(BlockTagProvider::new); pack.addProvider(ItemGroupEntryProviderProvider::new); diff --git a/src/datagen/java/net/errorcraft/itematic/data/client/AtlasProvider.java b/src/datagen/java/net/errorcraft/itematic/data/client/AtlasProvider.java deleted file mode 100644 index fa097f60..00000000 --- a/src/datagen/java/net/errorcraft/itematic/data/client/AtlasProvider.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.errorcraft.itematic.data.client; - -import net.errorcraft.itematic.client.render.ItematicTexturedRenderLayers; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricCodecDataProvider; -import net.minecraft.client.texture.atlas.AtlasSource; -import net.minecraft.client.texture.atlas.AtlasSourceManager; -import net.minecraft.data.DataOutput; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.util.Identifier; - -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.function.BiConsumer; - -public class AtlasProvider extends FabricCodecDataProvider> { - public AtlasProvider(FabricDataOutput dataOutput, CompletableFuture registriesFuture) { - super(dataOutput, registriesFuture, DataOutput.OutputType.RESOURCE_PACK, "atlases", AtlasSourceManager.LIST_CODEC); - } - - @Override - protected void configure(BiConsumer> provider, RegistryWrapper.WrapperLookup lookup) { - ItematicTexturedRenderLayers.bootstrap(provider); - } - - @Override - public String getName() { - return "Atlases"; - } -} diff --git a/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java b/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java index efdb3def..5fb57962 100644 --- a/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java +++ b/src/datagen/java/net/errorcraft/itematic/data/server/tag/ItemTagProvider.java @@ -1124,6 +1124,24 @@ protected void configure(RegistryWrapper.WrapperLookup lookup) { .add(ItemKeys.LAVA_BUCKET) .add(ItemKeys.POWDER_SNOW_BUCKET) .add(ItemKeys.MILK_BUCKET); + this.getOrCreateTagBuilder(ItematicItemTags.BUNDLES) + .add(ItemKeys.BUNDLE) + .add(ItemKeys.WHITE_BUNDLE) + .add(ItemKeys.LIGHT_GRAY_BUNDLE) + .add(ItemKeys.GRAY_BUNDLE) + .add(ItemKeys.BLACK_BUNDLE) + .add(ItemKeys.BROWN_BUNDLE) + .add(ItemKeys.RED_BUNDLE) + .add(ItemKeys.ORANGE_BUNDLE) + .add(ItemKeys.YELLOW_BUNDLE) + .add(ItemKeys.LIME_BUNDLE) + .add(ItemKeys.GREEN_BUNDLE) + .add(ItemKeys.CYAN_BUNDLE) + .add(ItemKeys.LIGHT_BLUE_BUNDLE) + .add(ItemKeys.BLUE_BUNDLE) + .add(ItemKeys.PURPLE_BUNDLE) + .add(ItemKeys.MAGENTA_BUNDLE) + .add(ItemKeys.PINK_BUNDLE); this.getOrCreateTagBuilder(ItematicItemTags.BOATS) .add(ItemKeys.OAK_BOAT) .add(ItemKeys.OAK_CHEST_BOAT) diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java index 6c2a7470..60ba2b7e 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/block/DispenserBehaviorTestSuite.java @@ -14,7 +14,6 @@ import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.passive.*; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potions; @@ -119,7 +118,7 @@ public void dispensingSpruceBoatSpawnsSpruceBoat(TestContext context) { blockEntity.addToFirstFreeSlot(stack); context.pushButton(BUTTON_POSITION); context.runAtTick(4, () -> context.addFinalTask(() -> { - context.expectEntityWithData(OUTPUT_POSITION, EntityType.BOAT, BoatEntity::getVariant, BoatEntity.Type.SPRUCE); + context.expectEntityAt(EntityType.SPRUCE_BOAT, OUTPUT_POSITION); Assert.itemStackIsEmpty(blockEntity.getStack(0)); })); } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java index b08c8849..6955d6d7 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/entity/PickEntityTestSuite.java @@ -7,6 +7,10 @@ import net.minecraft.entity.boss.dragon.EnderDragonEntity; import net.minecraft.entity.mob.*; import net.minecraft.entity.passive.*; +import net.minecraft.entity.vehicle.BoatEntity; +import net.minecraft.entity.vehicle.ChestBoatEntity; +import net.minecraft.entity.vehicle.ChestRaftEntity; +import net.minecraft.entity.vehicle.RaftEntity; import net.minecraft.item.ItemStack; import net.minecraft.test.GameTest; import net.minecraft.test.TestContext; @@ -73,8 +77,8 @@ public void getPickStackOnCamelGivesCamelSpawnEggItemStack(TestContext context) @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnCaveSpiderGivesCaveSpiderSpawnEggItemStack(TestContext context) { - CaveSpiderEntity cave_spider = context.spawnEntity(EntityType.CAVE_SPIDER, SPAWN_POSITION); - ItemStack stack = cave_spider.getPickBlockStack(); + CaveSpiderEntity caveSpider = context.spawnEntity(EntityType.CAVE_SPIDER, SPAWN_POSITION); + ItemStack stack = caveSpider.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.CAVE_SPIDER_SPAWN_EGG)); } @@ -129,15 +133,15 @@ public void getPickStackOnDrownedGivesDrownedSpawnEggItemStack(TestContext conte @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnElderGuardianGivesElderGuardianSpawnEggItemStack(TestContext context) { - ElderGuardianEntity elder_guardian = context.spawnEntity(EntityType.ELDER_GUARDIAN, SPAWN_POSITION); - ItemStack stack = elder_guardian.getPickBlockStack(); + ElderGuardianEntity elderGuardian = context.spawnEntity(EntityType.ELDER_GUARDIAN, SPAWN_POSITION); + ItemStack stack = elderGuardian.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ELDER_GUARDIAN_SPAWN_EGG)); } @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnEnderDragonGivesEnderDragonSpawnEggItemStack(TestContext context) { - EnderDragonEntity ender_dragon = context.spawnEntity(EntityType.ENDER_DRAGON, SPAWN_POSITION); - ItemStack stack = ender_dragon.getPickBlockStack(); + EnderDragonEntity enderDragon = context.spawnEntity(EntityType.ENDER_DRAGON, SPAWN_POSITION); + ItemStack stack = enderDragon.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ENDER_DRAGON_SPAWN_EGG)); } @@ -185,8 +189,8 @@ public void getPickStackOnGhastGivesGhastSpawnEggItemStack(TestContext context) @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnGlowSquidGivesGlowSquidSpawnEggItemStack(TestContext context) { - GlowSquidEntity glow_squid = context.spawnEntity(EntityType.GLOW_SQUID, SPAWN_POSITION); - ItemStack stack = glow_squid.getPickBlockStack(); + GlowSquidEntity glowSquid = context.spawnEntity(EntityType.GLOW_SQUID, SPAWN_POSITION); + ItemStack stack = glowSquid.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.GLOW_SQUID_SPAWN_EGG)); } @@ -227,8 +231,8 @@ public void getPickStackOnHuskGivesHuskSpawnEggItemStack(TestContext context) { @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnIronGolemGivesIronGolemSpawnEggItemStack(TestContext context) { - IronGolemEntity iron_golem = context.spawnEntity(EntityType.IRON_GOLEM, SPAWN_POSITION); - ItemStack stack = iron_golem.getPickBlockStack(); + IronGolemEntity ironGolem = context.spawnEntity(EntityType.IRON_GOLEM, SPAWN_POSITION); + ItemStack stack = ironGolem.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.IRON_GOLEM_SPAWN_EGG)); } @@ -241,8 +245,8 @@ public void getPickStackOnLlamaGivesLlamaSpawnEggItemStack(TestContext context) @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnMagmaCubeGivesMagmaCubeSpawnEggItemStack(TestContext context) { - MagmaCubeEntity magma_cube = context.spawnEntity(EntityType.MAGMA_CUBE, SPAWN_POSITION); - ItemStack stack = magma_cube.getPickBlockStack(); + MagmaCubeEntity magmaCube = context.spawnEntity(EntityType.MAGMA_CUBE, SPAWN_POSITION); + ItemStack stack = magmaCube.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.MAGMA_CUBE_SPAWN_EGG)); } @@ -304,8 +308,8 @@ public void getPickStackOnPiglinGivesPiglinSpawnEggItemStack(TestContext context @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnPiglinBruteGivesPiglinBruteSpawnEggItemStack(TestContext context) { - PiglinBruteEntity piglin_brute = context.spawnEntity(EntityType.PIGLIN_BRUTE, SPAWN_POSITION); - ItemStack stack = piglin_brute.getPickBlockStack(); + PiglinBruteEntity piglinBrute = context.spawnEntity(EntityType.PIGLIN_BRUTE, SPAWN_POSITION); + ItemStack stack = piglinBrute.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.PIGLIN_BRUTE_SPAWN_EGG)); } @@ -318,8 +322,8 @@ public void getPickStackOnPillagerGivesPillagerSpawnEggItemStack(TestContext con @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnPolarBearGivesPolarBearSpawnEggItemStack(TestContext context) { - PolarBearEntity polar_bear = context.spawnEntity(EntityType.POLAR_BEAR, SPAWN_POSITION); - ItemStack stack = polar_bear.getPickBlockStack(); + PolarBearEntity polarBear = context.spawnEntity(EntityType.POLAR_BEAR, SPAWN_POSITION); + ItemStack stack = polarBear.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.POLAR_BEAR_SPAWN_EGG)); } @@ -381,8 +385,8 @@ public void getPickStackOnSkeletonGivesSkeletonSpawnEggItemStack(TestContext con @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnSkeletonHorseGivesSkeletonHorseSpawnEggItemStack(TestContext context) { - SkeletonHorseEntity skeleton_horse = context.spawnEntity(EntityType.SKELETON_HORSE, SPAWN_POSITION); - ItemStack stack = skeleton_horse.getPickBlockStack(); + SkeletonHorseEntity skeletonHorse = context.spawnEntity(EntityType.SKELETON_HORSE, SPAWN_POSITION); + ItemStack stack = skeletonHorse.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.SKELETON_HORSE_SPAWN_EGG)); } @@ -402,8 +406,8 @@ public void getPickStackOnSnifferGivesSnifferSpawnEggItemStack(TestContext conte @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnSnowGolemGivesSnowGolemSpawnEggItemStack(TestContext context) { - SnowGolemEntity snow_golem = context.spawnEntity(EntityType.SNOW_GOLEM, SPAWN_POSITION); - ItemStack stack = snow_golem.getPickBlockStack(); + SnowGolemEntity snowGolem = context.spawnEntity(EntityType.SNOW_GOLEM, SPAWN_POSITION); + ItemStack stack = snowGolem.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.SNOW_GOLEM_SPAWN_EGG)); } @@ -444,15 +448,15 @@ public void getPickStackOnTadpoleGivesTadpoleSpawnEggItemStack(TestContext conte @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnTraderLlamaGivesTraderLlamaSpawnEggItemStack(TestContext context) { - TraderLlamaEntity trader_llama = context.spawnEntity(EntityType.TRADER_LLAMA, SPAWN_POSITION); - ItemStack stack = trader_llama.getPickBlockStack(); + TraderLlamaEntity traderLlama = context.spawnEntity(EntityType.TRADER_LLAMA, SPAWN_POSITION); + ItemStack stack = traderLlama.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.TRADER_LLAMA_SPAWN_EGG)); } @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnTropicalFishGivesTropicalFishSpawnEggItemStack(TestContext context) { - TropicalFishEntity tropical_fish = context.spawnEntity(EntityType.TROPICAL_FISH, SPAWN_POSITION); - ItemStack stack = tropical_fish.getPickBlockStack(); + TropicalFishEntity tropicalFish = context.spawnEntity(EntityType.TROPICAL_FISH, SPAWN_POSITION); + ItemStack stack = tropicalFish.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.TROPICAL_FISH_SPAWN_EGG)); } @@ -486,8 +490,8 @@ public void getPickStackOnVindicatorGivesVindicatorSpawnEggItemStack(TestContext @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnWanderingTraderGivesWanderingTraderSpawnEggItemStack(TestContext context) { - WanderingTraderEntity wandering_trader = context.spawnEntity(EntityType.WANDERING_TRADER, SPAWN_POSITION); - ItemStack stack = wandering_trader.getPickBlockStack(); + WanderingTraderEntity wanderingTrader = context.spawnEntity(EntityType.WANDERING_TRADER, SPAWN_POSITION); + ItemStack stack = wanderingTrader.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.WANDERING_TRADER_SPAWN_EGG)); } @@ -514,8 +518,8 @@ public void getPickStackOnWitherGivesWitherSpawnEggItemStack(TestContext context @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnWitherSkeletonGivesWitherSkeletonSpawnEggItemStack(TestContext context) { - WitherSkeletonEntity wither_skeleton = context.spawnEntity(EntityType.WITHER_SKELETON, SPAWN_POSITION); - ItemStack stack = wither_skeleton.getPickBlockStack(); + WitherSkeletonEntity witherSkeleton = context.spawnEntity(EntityType.WITHER_SKELETON, SPAWN_POSITION); + ItemStack stack = witherSkeleton.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.WITHER_SKELETON_SPAWN_EGG)); } @@ -542,22 +546,148 @@ public void getPickStackOnZombieGivesZombieSpawnEggItemStack(TestContext context @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnZombieHorseGivesZombieHorseSpawnEggItemStack(TestContext context) { - ZombieHorseEntity zombie_horse = context.spawnEntity(EntityType.ZOMBIE_HORSE, SPAWN_POSITION); - ItemStack stack = zombie_horse.getPickBlockStack(); + ZombieHorseEntity zombieHorse = context.spawnEntity(EntityType.ZOMBIE_HORSE, SPAWN_POSITION); + ItemStack stack = zombieHorse.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ZOMBIE_HORSE_SPAWN_EGG)); } @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnZombieVillagerGivesZombieVillagerSpawnEggItemStack(TestContext context) { - ZombieVillagerEntity zombie_villager = context.spawnEntity(EntityType.ZOMBIE_VILLAGER, SPAWN_POSITION); - ItemStack stack = zombie_villager.getPickBlockStack(); + ZombieVillagerEntity zombieVillager = context.spawnEntity(EntityType.ZOMBIE_VILLAGER, SPAWN_POSITION); + ItemStack stack = zombieVillager.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ZOMBIE_VILLAGER_SPAWN_EGG)); } @GameTest(templateName = "itematic:entity.platform") public void getPickStackOnZombifiedPiglinGivesZombifiedPiglinSpawnEggItemStack(TestContext context) { - ZombifiedPiglinEntity zombified_piglin = context.spawnEntity(EntityType.ZOMBIFIED_PIGLIN, SPAWN_POSITION); - ItemStack stack = zombified_piglin.getPickBlockStack(); + ZombifiedPiglinEntity zombifiedPiglin = context.spawnEntity(EntityType.ZOMBIFIED_PIGLIN, SPAWN_POSITION); + ItemStack stack = zombifiedPiglin.getPickBlockStack(); context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ZOMBIFIED_PIGLIN_SPAWN_EGG)); } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnAcaciaBoatGivesAcaciaBoatItemStack(TestContext context) { + BoatEntity acaciaBoat = context.spawnEntity(EntityType.ACACIA_BOAT, SPAWN_POSITION); + ItemStack stack = acaciaBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ACACIA_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnAcaciaChestBoatGivesAcaciaChestBoatItemStack(TestContext context) { + ChestBoatEntity acaciaChestBoat = context.spawnEntity(EntityType.ACACIA_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = acaciaChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.ACACIA_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnBambooRaftGivesBambooRaftItemStack(TestContext context) { + RaftEntity bambooRaft = context.spawnEntity(EntityType.BAMBOO_RAFT, SPAWN_POSITION); + ItemStack stack = bambooRaft.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.BAMBOO_RAFT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnBambooChestRaftGivesBambooChestRaftItemStack(TestContext context) { + ChestRaftEntity bambooChestRaft = context.spawnEntity(EntityType.BAMBOO_CHEST_RAFT, SPAWN_POSITION); + ItemStack stack = bambooChestRaft.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.BAMBOO_CHEST_RAFT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnBirchBoatGivesBirchBoatItemStack(TestContext context) { + BoatEntity birchBoat = context.spawnEntity(EntityType.BIRCH_BOAT, SPAWN_POSITION); + ItemStack stack = birchBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.BIRCH_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnBirchChestBoatGivesBirchChestBoatItemStack(TestContext context) { + ChestBoatEntity birchChestBoat = context.spawnEntity(EntityType.BIRCH_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = birchChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.BIRCH_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnCherryBoatGivesCherryBoatItemStack(TestContext context) { + BoatEntity cherryBoat = context.spawnEntity(EntityType.CHERRY_BOAT, SPAWN_POSITION); + ItemStack stack = cherryBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.CHERRY_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnCherryChestBoatGivesCherryChestBoatItemStack(TestContext context) { + ChestBoatEntity cherryChestBoat = context.spawnEntity(EntityType.CHERRY_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = cherryChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.CHERRY_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnDarkOakBoatGivesDarkOakBoatItemStack(TestContext context) { + BoatEntity darkOakBoat = context.spawnEntity(EntityType.DARK_OAK_BOAT, SPAWN_POSITION); + ItemStack stack = darkOakBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.DARK_OAK_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnDarkOakChestBoatGivesDarkOakChestBoatItemStack(TestContext context) { + ChestBoatEntity darkOakChestBoat = context.spawnEntity(EntityType.DARK_OAK_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = darkOakChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.DARK_OAK_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnJungleBoatGivesJungleBoatItemStack(TestContext context) { + BoatEntity jungleBoat = context.spawnEntity(EntityType.JUNGLE_BOAT, SPAWN_POSITION); + ItemStack stack = jungleBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.JUNGLE_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnJungleChestBoatGivesJungleChestBoatItemStack(TestContext context) { + ChestBoatEntity jungleChestBoat = context.spawnEntity(EntityType.JUNGLE_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = jungleChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.JUNGLE_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnMangroveBoatGivesMangroveBoatItemStack(TestContext context) { + BoatEntity mangroveBoat = context.spawnEntity(EntityType.MANGROVE_BOAT, SPAWN_POSITION); + ItemStack stack = mangroveBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.MANGROVE_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnMangroveChestBoatGivesMangroveChestBoatItemStack(TestContext context) { + ChestBoatEntity mangroveChestBoat = context.spawnEntity(EntityType.MANGROVE_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = mangroveChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.MANGROVE_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnOakBoatGivesOakBoatItemStack(TestContext context) { + BoatEntity oakBoat = context.spawnEntity(EntityType.OAK_BOAT, SPAWN_POSITION); + ItemStack stack = oakBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.OAK_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnOakChestBoatGivesOakChestBoatItemStack(TestContext context) { + ChestBoatEntity oakChestBoat = context.spawnEntity(EntityType.OAK_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = oakChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.OAK_CHEST_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnSpruceBoatGivesSpruceBoatItemStack(TestContext context) { + BoatEntity spruceBoat = context.spawnEntity(EntityType.SPRUCE_BOAT, SPAWN_POSITION); + ItemStack stack = spruceBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.SPRUCE_BOAT)); + } + + @GameTest(templateName = "itematic:entity.platform") + public void getPickStackOnSpruceChestBoatGivesSpruceChestBoatItemStack(TestContext context) { + ChestBoatEntity spruceChestBoat = context.spawnEntity(EntityType.SPRUCE_CHEST_BOAT, SPAWN_POSITION); + ItemStack stack = spruceChestBoat.getPickBlockStack(); + context.addInstantFinalTask(() -> Assert.itemStackIsOf(stack, ItemKeys.SPRUCE_CHEST_BOAT)); + } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java index b4fffa41..55f4bd27 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/LeadTestSuite.java @@ -40,11 +40,11 @@ public void usingLeadOnBoatLeashesBoat(TestContext context) { PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); player.setStackInHand(Hand.MAIN_HAND, stack); world.spawnEntity(player); - BoatEntity boat = TestUtil.createEntityAt(context, EntityType.BOAT, PLACED_ENTITY_POSITION, entity -> {}); + BoatEntity boat = TestUtil.createEntityAt(context, EntityType.OAK_BOAT, PLACED_ENTITY_POSITION, entity -> {}); context.addInstantFinalTask(() -> { ActionResult result = boat.interact(player, Hand.MAIN_HAND); - context.assertTrue(result.isAccepted(), "Expected interaction with Boat to be successful"); - context.assertTrue(boat.isLeashed(), "Expected Boat to be leashed"); + context.assertTrue(result.isAccepted(), "Expected interaction with Oak Boat to be successful"); + context.assertTrue(boat.isLeashed(), "Expected Oak Boat to be leashed"); }); } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java index 239498bd..2fc0a359 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/TotemOfUndyingTestSuite.java @@ -19,7 +19,7 @@ public void holdingTotemOfUndyingSavesHolderFromDeath(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.TOTEM_OF_UNDYING); player.setStackInHand(Hand.MAIN_HAND, stack); - player.damage(world.getDamageSources().fall(), Float.MAX_VALUE); + player.damage(world, world.getDamageSources().fall(), Float.MAX_VALUE); context.addInstantFinalTask(() -> { Assert.areFloatsEqual(player.getHealth(), 1.0f, (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead"); context.expectEntityHasEffect(player, StatusEffects.REGENERATION, 1); diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java index 39f9bba7..c8f552e6 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/ImmuneToDamageItemComponentTestSuite.java @@ -20,7 +20,7 @@ public void explodingNetherStarKeepsItemAlive(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.NETHER_STAR); ItemEntity item = new ItemEntity(world, 0.0d, 0.0d, 0.0d, stack); TestUtil.spawnEntity(context, item, SPAWN_POSITION); - item.damage(world.getDamageSources().explosion(null), Float.MAX_VALUE); + item.damage(world, world.getDamageSources().explosion(null), Float.MAX_VALUE); context.addInstantFinalTask(() -> context.expectEntity(EntityType.ITEM)); } @@ -30,27 +30,27 @@ public void explodingStickDestroysItem(TestContext context) { ItemStack stack = world.itematic$createStack(ItemKeys.STICK); ItemEntity item = new ItemEntity(world, 0.0d, 0.0d, 0.0d, stack); TestUtil.spawnEntity(context, item, SPAWN_POSITION); - item.damage(world.getDamageSources().explosion(null), Float.MAX_VALUE); + item.damage(world, world.getDamageSources().explosion(null), Float.MAX_VALUE); context.addInstantFinalTask(() -> context.dontExpectEntity(EntityType.ITEM)); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) - public void firingNetheriteIngotKeepsItemAlive(TestContext context) { + public void settingNetheriteIngotOnFireKeepsItemAlive(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.NETHERITE_INGOT); ItemEntity item = new ItemEntity(world, 0.0d, 0.0d, 0.0d, stack); TestUtil.spawnEntity(context, item, SPAWN_POSITION); - item.damage(world.getDamageSources().inFire(), Float.MAX_VALUE); + item.damage(world, world.getDamageSources().inFire(), Float.MAX_VALUE); context.addInstantFinalTask(() -> context.expectEntity(EntityType.ITEM)); } @GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE) - public void firingStickDestroysItem(TestContext context) { + public void settingStickOnFireDestroysItem(TestContext context) { ServerWorld world = context.getWorld(); ItemStack stack = world.itematic$createStack(ItemKeys.STICK); ItemEntity item = new ItemEntity(world, 0.0d, 0.0d, 0.0d, stack); TestUtil.spawnEntity(context, item, SPAWN_POSITION); - item.damage(world.getDamageSources().inFire(), Float.MAX_VALUE); + item.damage(world, world.getDamageSources().inFire(), Float.MAX_VALUE); context.addInstantFinalTask(() -> context.dontExpectEntity(EntityType.ITEM)); } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/LifeSavingItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/LifeSavingItemComponentTestSuite.java index bc621f72..9d541b0c 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/LifeSavingItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/LifeSavingItemComponentTestSuite.java @@ -19,7 +19,7 @@ public void dyingWhileHoldingTotemOfUndyingKeepsPlayerAlive(TestContext context) ItemStack stack = world.itematic$createStack(ItemKeys.TOTEM_OF_UNDYING); PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); player.setStackInHand(Hand.MAIN_HAND, stack); - player.damage(world.getDamageSources().fall(), Float.MAX_VALUE); + player.damage(world, world.getDamageSources().fall(), Float.MAX_VALUE); context.addInstantFinalTask(() -> { Assert.areFloatsEqual(player.getHealth(), 1.0f, (value, expected) -> "Expected health to be " + expected + ", got " + value + " instead"); context.expectEntityHasEffect(player, StatusEffects.REGENERATION, 1); @@ -34,7 +34,7 @@ public void dyingFromBypassedInvulnerabilityDamageWhileHoldingTotemOfUndyingKill ItemStack stack = world.itematic$createStack(ItemKeys.TOTEM_OF_UNDYING); PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL); player.setStackInHand(Hand.MAIN_HAND, stack); - player.damage(world.getDamageSources().genericKill(), Float.MAX_VALUE); + player.damage(world, world.getDamageSources().genericKill(), Float.MAX_VALUE); context.addInstantFinalTask(() -> context.assertTrue(player.isDead(), "Expected player to be dead")); } } diff --git a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java index ec64d980..e1c26436 100644 --- a/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java +++ b/src/gametest/java/net/errorcraft/itematic/gametest/item/component/WeaponItemComponentTestSuite.java @@ -28,7 +28,7 @@ public void zombieAttackingUnarmedDealsDamageFromTrueBaseValueAttackDamageAttrib world.spawnEntity(zombie); PigEntity victim = spawnVictim(context); context.createTimedTaskRunner().expectMinDurationAndRun(1, () -> { - context.assertTrue(zombie.tryAttack(victim), "Expected attack to be successful"); + context.assertTrue(zombie.tryAttack(world, victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE), @@ -45,7 +45,7 @@ public void zombieAttackingWithIronSwordDealsCorrectDamage(TestContext context) world.spawnEntity(zombie); PigEntity victim = spawnVictim(context); context.createTimedTaskRunner().expectMinDurationAndRun(1, () -> { - context.assertTrue(zombie.tryAttack(victim), "Expected attack to be successful"); + context.assertTrue(zombie.tryAttack(world, victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), MAX_HEALTH_VICTIM - zombie.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), @@ -62,7 +62,7 @@ public void piglinAttackingWithIronSwordDealsCorrectDamage(TestContext context) world.spawnEntity(piglin); PigEntity victim = spawnVictim(context); context.createTimedTaskRunner().expectMinDurationAndRun(1, () -> { - context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); + context.assertTrue(piglin.tryAttack(world, victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), @@ -79,7 +79,7 @@ public void piglinAttackingWithGoldenSwordDealsCorrectDamage(TestContext context world.spawnEntity(piglin); PigEntity victim = spawnVictim(context); context.createTimedTaskRunner().expectMinDurationAndRun(1, () -> { - context.assertTrue(piglin.tryAttack(victim), "Expected attack to be successful"); + context.assertTrue(piglin.tryAttack(world, victim), "Expected attack to be successful"); Assert.areDoublesEqual( victim.getHealth(), MAX_HEALTH_VICTIM - piglin.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) - TestUtil.getItemBehavior(stack, ItemComponentTypes.WEAPON).attackDamage().defaultDamage(), diff --git a/src/main/generated/assets/minecraft/atlases/armor_materials.json b/src/main/generated/assets/minecraft/atlases/armor_materials.json deleted file mode 100644 index 34d01d5e..00000000 --- a/src/main/generated/assets/minecraft/atlases/armor_materials.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "models/armor/", - "source": "models/armor" - }, - { - "type": "minecraft:directory", - "prefix": "entity/horse/armor/", - "source": "entity/horse/armor" - }, - { - "type": "minecraft:single", - "resource": "minecraft:entity/wolf/wolf_armor" - }, - { - "type": "minecraft:single", - "resource": "minecraft:entity/wolf/wolf_armor_overlay" - } - ] -} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/item/acacia_boat.json b/src/main/generated/data/minecraft/item/acacia_boat.json index a7a60de0..442dc0ca 100644 --- a/src/main/generated/data/minecraft/item/acacia_boat.json +++ b/src/main/generated/data/minecraft/item/acacia_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "acacia" + "type": "minecraft:acacia_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/acacia_chest_boat.json b/src/main/generated/data/minecraft/item/acacia_chest_boat.json index 17566984..a2880e9d 100644 --- a/src/main/generated/data/minecraft/item/acacia_chest_boat.json +++ b/src/main/generated/data/minecraft/item/acacia_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "acacia" + "type": "minecraft:acacia_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/bamboo_chest_raft.json b/src/main/generated/data/minecraft/item/bamboo_chest_raft.json index 2b914210..8e741c82 100644 --- a/src/main/generated/data/minecraft/item/bamboo_chest_raft.json +++ b/src/main/generated/data/minecraft/item/bamboo_chest_raft.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "bamboo" + "type": "minecraft:bamboo_chest_raft" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/bamboo_raft.json b/src/main/generated/data/minecraft/item/bamboo_raft.json index eed7e69e..22d89309 100644 --- a/src/main/generated/data/minecraft/item/bamboo_raft.json +++ b/src/main/generated/data/minecraft/item/bamboo_raft.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "bamboo" + "type": "minecraft:bamboo_raft" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/birch_boat.json b/src/main/generated/data/minecraft/item/birch_boat.json index ce59d78c..d6269752 100644 --- a/src/main/generated/data/minecraft/item/birch_boat.json +++ b/src/main/generated/data/minecraft/item/birch_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "birch" + "type": "minecraft:birch_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/birch_chest_boat.json b/src/main/generated/data/minecraft/item/birch_chest_boat.json index 4d871702..b48f2e56 100644 --- a/src/main/generated/data/minecraft/item/birch_chest_boat.json +++ b/src/main/generated/data/minecraft/item/birch_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "birch" + "type": "minecraft:birch_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/cherry_boat.json b/src/main/generated/data/minecraft/item/cherry_boat.json index eafa45b2..e1da5984 100644 --- a/src/main/generated/data/minecraft/item/cherry_boat.json +++ b/src/main/generated/data/minecraft/item/cherry_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "cherry" + "type": "minecraft:cherry_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/cherry_chest_boat.json b/src/main/generated/data/minecraft/item/cherry_chest_boat.json index ead1435e..56a6b10c 100644 --- a/src/main/generated/data/minecraft/item/cherry_chest_boat.json +++ b/src/main/generated/data/minecraft/item/cherry_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "cherry" + "type": "minecraft:cherry_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/dark_oak_boat.json b/src/main/generated/data/minecraft/item/dark_oak_boat.json index 98f6be47..6b0c86c0 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_boat.json +++ b/src/main/generated/data/minecraft/item/dark_oak_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "dark_oak" + "type": "minecraft:dark_oak_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json b/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json index a0a29106..dda3d417 100644 --- a/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json +++ b/src/main/generated/data/minecraft/item/dark_oak_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "dark_oak" + "type": "minecraft:dark_oak_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/jungle_boat.json b/src/main/generated/data/minecraft/item/jungle_boat.json index 4be7d90f..2da2e83b 100644 --- a/src/main/generated/data/minecraft/item/jungle_boat.json +++ b/src/main/generated/data/minecraft/item/jungle_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "jungle" + "type": "minecraft:jungle_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/jungle_chest_boat.json b/src/main/generated/data/minecraft/item/jungle_chest_boat.json index 79e17386..30731949 100644 --- a/src/main/generated/data/minecraft/item/jungle_chest_boat.json +++ b/src/main/generated/data/minecraft/item/jungle_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "jungle" + "type": "minecraft:jungle_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/mangrove_boat.json b/src/main/generated/data/minecraft/item/mangrove_boat.json index 824e4393..c2cd8bf0 100644 --- a/src/main/generated/data/minecraft/item/mangrove_boat.json +++ b/src/main/generated/data/minecraft/item/mangrove_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "mangrove" + "type": "minecraft:mangrove_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/mangrove_chest_boat.json b/src/main/generated/data/minecraft/item/mangrove_chest_boat.json index 5694c5e1..db56677b 100644 --- a/src/main/generated/data/minecraft/item/mangrove_chest_boat.json +++ b/src/main/generated/data/minecraft/item/mangrove_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "mangrove" + "type": "minecraft:mangrove_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/oak_boat.json b/src/main/generated/data/minecraft/item/oak_boat.json index 65997f2a..ba44271c 100644 --- a/src/main/generated/data/minecraft/item/oak_boat.json +++ b/src/main/generated/data/minecraft/item/oak_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "oak" + "type": "minecraft:oak_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/oak_chest_boat.json b/src/main/generated/data/minecraft/item/oak_chest_boat.json index 00e41605..4048f118 100644 --- a/src/main/generated/data/minecraft/item/oak_chest_boat.json +++ b/src/main/generated/data/minecraft/item/oak_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "oak" + "type": "minecraft:oak_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/spruce_boat.json b/src/main/generated/data/minecraft/item/spruce_boat.json index 03fa2a49..f2af68b5 100644 --- a/src/main/generated/data/minecraft/item/spruce_boat.json +++ b/src/main/generated/data/minecraft/item/spruce_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:boat", - "variant": "spruce" + "type": "minecraft:spruce_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/spruce_chest_boat.json b/src/main/generated/data/minecraft/item/spruce_chest_boat.json index 7824c8f7..5bb94d76 100644 --- a/src/main/generated/data/minecraft/item/spruce_chest_boat.json +++ b/src/main/generated/data/minecraft/item/spruce_chest_boat.json @@ -5,8 +5,7 @@ }, "minecraft:entity": { "entity": { - "type": "minecraft:chest_boat", - "variant": "spruce" + "type": "minecraft:spruce_chest_boat" } }, "minecraft:fuel": { diff --git a/src/main/generated/data/minecraft/item/trident.json b/src/main/generated/data/minecraft/item/trident.json index 7976926e..8e1e7731 100644 --- a/src/main/generated/data/minecraft/item/trident.json +++ b/src/main/generated/data/minecraft/item/trident.json @@ -9,8 +9,7 @@ }, "minecraft:projectile": { "entity": { - "type": "minecraft:trident", - "prevent_spawn_from_riptide": true + "type": "minecraft:trident" } }, "minecraft:stackable": 1, diff --git a/src/main/generated/data/minecraft/item_group_entry_provider/tools_and_utilities.json b/src/main/generated/data/minecraft/item_group_entry_provider/tools_and_utilities.json index cc7ee9b4..fe80eb39 100644 --- a/src/main/generated/data/minecraft/item_group_entry_provider/tools_and_utilities.json +++ b/src/main/generated/data/minecraft/item_group_entry_provider/tools_and_utilities.json @@ -16,7 +16,10 @@ "minecraft:brush", "minecraft:name_tag", "minecraft:lead", - "minecraft:bundle", + { + "type": "tag", + "tag": "minecraft:item_group/bundles" + }, "minecraft:compass", "minecraft:recovery_compass", "minecraft:clock", diff --git a/src/main/generated/data/minecraft/tags/item/item_group/bundles.json b/src/main/generated/data/minecraft/tags/item/item_group/bundles.json new file mode 100644 index 00000000..9bf33524 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/item/item_group/bundles.json @@ -0,0 +1,21 @@ +{ + "values": [ + "minecraft:bundle", + "minecraft:white_bundle", + "minecraft:light_gray_bundle", + "minecraft:gray_bundle", + "minecraft:black_bundle", + "minecraft:brown_bundle", + "minecraft:red_bundle", + "minecraft:orange_bundle", + "minecraft:yellow_bundle", + "minecraft:lime_bundle", + "minecraft:green_bundle", + "minecraft:cyan_bundle", + "minecraft:light_blue_bundle", + "minecraft:blue_bundle", + "minecraft:purple_bundle", + "minecraft:magenta_bundle", + "minecraft:pink_bundle" + ] +} \ No newline at end of file diff --git a/src/main/java/net/errorcraft/itematic/access/entity/EntityAccess.java b/src/main/java/net/errorcraft/itematic/access/entity/EntityAccess.java index 6c7e033d..4f160873 100644 --- a/src/main/java/net/errorcraft/itematic/access/entity/EntityAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/entity/EntityAccess.java @@ -4,18 +4,19 @@ import net.minecraft.item.Item; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.server.world.ServerWorld; public interface EntityAccess { - default ItemEntity itematic$dropItem(RegistryKey key) { - return this.itematic$dropItem(key, 0.0f); + default ItemEntity itematic$dropItem(ServerWorld world, RegistryKey key) { + return null; } - default ItemEntity itematic$dropItem(RegistryKey key, float yOffset) { + default ItemEntity itematic$dropItem(ServerWorld world, RegistryKey key, float yOffset) { return null; } - default ItemEntity itematic$dropItem(RegistryEntry entry) { - return this.itematic$dropItem(entry, 0.0f); + default ItemEntity itematic$dropItem(ServerWorld world, RegistryEntry entry) { + return null; } - default ItemEntity itematic$dropItem(RegistryEntry entry, float yOffset) { + default ItemEntity itematic$dropItem(ServerWorld world, RegistryEntry entry, float yOffset) { return null; } } diff --git a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java index aea09e3f..6fd09dd8 100644 --- a/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java +++ b/src/main/java/net/errorcraft/itematic/component/ItematicDataComponentTypes.java @@ -18,7 +18,6 @@ import org.apache.commons.lang3.math.Fraction; public class ItematicDataComponentTypes { - public static final ComponentType IMMUNE_TO_DAMAGE = DataComponentTypesAccessor.register("immune_to_damage", builder -> builder.codec(ImmuneToDamageComponent.CODEC).packetCodec(ImmuneToDamageComponent.PACKET_CODEC)); public static final ComponentType USE_DURATION = DataComponentTypesAccessor.register("use_duration", builder -> builder.codec(UseDurationDataComponent.CODEC).packetCodec(UseDurationDataComponent.PACKET_CODEC).cache()); public static final ComponentType USE_ANIMATION = DataComponentTypesAccessor.register("use_animation", builder -> builder.codec(UseAction.CODEC).packetCodec(UseAction.PACKET_CODEC).cache()); public static final ComponentType SHOOTER_AMMUNITION = DataComponentTypesAccessor.register("shooter_ammunition", builder -> builder.codec(ItemListDataComponent.CODEC).packetCodec(ItemListDataComponent.PACKET_CODEC).cache()); diff --git a/src/main/java/net/errorcraft/itematic/component/type/ImmuneToDamageComponent.java b/src/main/java/net/errorcraft/itematic/component/type/ImmuneToDamageComponent.java deleted file mode 100644 index 0882f35d..00000000 --- a/src/main/java/net/errorcraft/itematic/component/type/ImmuneToDamageComponent.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.errorcraft.itematic.component.type; - -import com.mojang.serialization.Codec; -import io.netty.buffer.ByteBuf; -import net.errorcraft.itematic.network.codec.PacketCodecUtil; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.entity.damage.DamageType; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.TagKey; - -public record ImmuneToDamageComponent(TagKey damage) { - public static final Codec CODEC = TagKey.unprefixedCodec(RegistryKeys.DAMAGE_TYPE) - .xmap(ImmuneToDamageComponent::new, ImmuneToDamageComponent::damage); - public static final PacketCodec PACKET_CODEC = PacketCodecUtil.tag(RegistryKeys.DAMAGE_TYPE) - .xmap(ImmuneToDamageComponent::new, ImmuneToDamageComponent::damage); - - public boolean damage(DamageSource source) { - return !source.isIn(this.damage); - } -} diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java deleted file mode 100644 index 61cb83ef..00000000 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/BoatEntityInitializer.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.errorcraft.itematic.entity.initializer.initializers; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.entity.initializer.EntityInitializer; -import net.errorcraft.itematic.world.action.context.ActionContext; -import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.vehicle.BoatEntity; -import net.minecraft.util.StringIdentifiable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public record BoatEntityInitializer(BoatEntity.Type variant) implements EntityInitializer { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - StringIdentifiable.createCodec(BoatEntity.Type::values).fieldOf("variant").forGetter(BoatEntityInitializer::variant) - ).apply(instance, BoatEntityInitializer::new)); - - @Override - public EntityType type() { - return EntityType.BOAT; - } - - @Override - public BoatEntity create(ActionContext context, SpawnReason reason) { - return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET)); - } - - private BoatEntity create(World world, BlockPos pos) { - BoatEntity entity = new BoatEntity(world, pos.getX() + 0.5d, pos.getY(), pos.getZ() + 0.5d); - entity.setVariant(this.variant); - return entity; - } -} diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java deleted file mode 100644 index d9a6c6e2..00000000 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/ChestBoatEntityInitializer.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.errorcraft.itematic.entity.initializer.initializers; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.entity.initializer.EntityInitializer; -import net.errorcraft.itematic.world.action.context.ActionContext; -import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.vehicle.BoatEntity; -import net.minecraft.entity.vehicle.ChestBoatEntity; -import net.minecraft.util.StringIdentifiable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public record ChestBoatEntityInitializer(BoatEntity.Type variant) implements EntityInitializer { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - StringIdentifiable.createCodec(BoatEntity.Type::values).fieldOf("variant").forGetter(ChestBoatEntityInitializer::variant) - ).apply(instance, ChestBoatEntityInitializer::new)); - - @Override - public EntityType type() { - return EntityType.CHEST_BOAT; - } - - @Override - public ChestBoatEntity create(ActionContext context, SpawnReason reason) { - return this.create(context.world(), context.blockPos(ActionContextParameter.TARGET)); - } - - private ChestBoatEntity create(World world, BlockPos pos) { - ChestBoatEntity entity = new ChestBoatEntity(world, pos.getX() + 0.5d, pos.getY(), pos.getZ() + 0.5d); - entity.setVariant(this.variant); - return entity; - } -} diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java index c8829ba3..020722fa 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/TridentEntityInitializer.java @@ -1,8 +1,6 @@ package net.errorcraft.itematic.entity.initializer.initializers; -import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; import net.errorcraft.itematic.entity.initializer.EntityInitializer; import net.errorcraft.itematic.world.action.context.ActionContext; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; @@ -14,10 +12,9 @@ import net.minecraft.entity.projectile.TridentEntity; import net.minecraft.item.ItemStack; -public record TridentEntityInitializer(boolean preventSpawnFromRiptide) implements EntityInitializer { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - Codec.BOOL.optionalFieldOf("prevent_spawn_from_riptide", false).forGetter(TridentEntityInitializer::preventSpawnFromRiptide) - ).apply(instance, TridentEntityInitializer::new)); +public class TridentEntityInitializer implements EntityInitializer { + public static final TridentEntityInitializer INSTANCE = new TridentEntityInitializer(); + public static final MapCodec CODEC = MapCodec.unit(INSTANCE); @Override public EntityType type() { @@ -31,7 +28,7 @@ public TridentEntity create(ActionContext context, SpawnReason reason) { float spinAttackStrength = user != null ? EnchantmentHelper.getTridentSpinAttackStrength(stack, user) : 0.0f; - if (this.preventSpawnFromRiptide && spinAttackStrength > 0.0f) { + if (spinAttackStrength > 0.0f) { return null; } @@ -42,10 +39,6 @@ public TridentEntity create(ActionContext context, SpawnReason reason) { return entity; } - public static TridentEntityInitializer of(boolean preventSpawnFromRiptide) { - return new TridentEntityInitializer(preventSpawnFromRiptide); - } - private TridentEntity create(ActionContext context, ItemStack stack) { return context.livingEntity(ActionContextParameter.THIS) .map(user -> new TridentEntity(context.world(), user, stack)) diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index cc43c242..484b30b6 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -57,7 +57,6 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.entity.projectile.SpectralArrowEntity; -import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.fluid.Fluid; import net.minecraft.item.*; import net.minecraft.item.consume.UseAction; @@ -5437,7 +5436,7 @@ private void bootstrapToolsAndWeapons() { .build()) .with(WeaponItemComponent.of(1, TridentItem.ATTACK_DAMAGE + 1, 0.275d)) .with(ThrowableItemComponent.trident(TridentItem.THROW_SPEED, 0.0f, TridentItem.MIN_DRAW_DURATION)) - .with(ProjectileItemComponent.of(TridentEntityInitializer.of(true))) + .with(ProjectileItemComponent.of(TridentEntityInitializer.INSTANCE)) .with(EnchantableItemComponent.of(1)) .build(), ItemEventMap.builder() @@ -5580,7 +5579,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.OAK_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.OAK), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.OAK_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5588,7 +5587,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.OAK_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.OAK), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.OAK_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5596,7 +5595,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.SPRUCE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.SPRUCE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.SPRUCE_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5604,7 +5603,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.SPRUCE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.SPRUCE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.SPRUCE_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5612,7 +5611,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.BIRCH_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.BIRCH), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.BIRCH_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5620,7 +5619,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.BIRCH_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.BIRCH), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.BIRCH_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5628,7 +5627,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.JUNGLE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.JUNGLE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.JUNGLE_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5636,7 +5635,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.JUNGLE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.JUNGLE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.JUNGLE_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5644,7 +5643,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.ACACIA_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.ACACIA), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.ACACIA_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5652,7 +5651,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.ACACIA_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.ACACIA), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.ACACIA_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5660,7 +5659,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.CHERRY_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.CHERRY), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.CHERRY_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5668,7 +5667,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.CHERRY_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.CHERRY), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.CHERRY_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5676,7 +5675,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.DARK_OAK_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.DARK_OAK), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.DARK_OAK_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5684,7 +5683,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.DARK_OAK_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.DARK_OAK), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.DARK_OAK_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5692,7 +5691,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.MANGROVE_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.MANGROVE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.MANGROVE_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5700,7 +5699,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.MANGROVE_CHEST_BOAT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.MANGROVE), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.MANGROVE_CHEST_BOAT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5708,7 +5707,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.BAMBOO_RAFT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new BoatEntityInitializer(BoatEntity.Type.BAMBOO), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.BAMBOO_RAFT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); @@ -5716,7 +5715,7 @@ private void bootstrapEntities() { ItemDisplay.Builder.forItem(ItemKeys.BAMBOO_CHEST_RAFT).build(), ItemComponentSet.builder() .with(StackableItemComponent.of(1)) - .with(EntityItemComponent.from(new ChestBoatEntityInitializer(BoatEntity.Type.BAMBOO), this.dispenseBehaviors)) + .with(EntityItemComponent.from(SimpleEntityInitializer.of(EntityType.BAMBOO_CHEST_RAFT), this.dispenseBehaviors)) .with(FuelItemComponent.of(FurnaceBlockEntityUtil.BOAT_FUEL_TIME)) .build() )); diff --git a/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java b/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java index 9e987fd8..9ba6d111 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java +++ b/src/main/java/net/errorcraft/itematic/item/ItematicItemTags.java @@ -130,6 +130,7 @@ public class ItematicItemTags { public static final TagKey MINECARTS = of("item_group/minecarts"); public static final TagKey TOOLS = of("item_group/tools"); public static final TagKey BUCKETS = of("item_group/buckets"); + public static final TagKey BUNDLES = of("item_group/bundles"); public static final TagKey BOATS = of("item_group/boats"); public static final TagKey MUSIC_DISCS = of("item_group/music_discs"); public static final TagKey SWORDS = of("item_group/swords"); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/ImmuneToDamageItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/ImmuneToDamageItemComponent.java index fd0e62c0..abe38700 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/ImmuneToDamageItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/ImmuneToDamageItemComponent.java @@ -2,12 +2,12 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.component.ItematicDataComponentTypes; -import net.errorcraft.itematic.component.type.ImmuneToDamageComponent; import net.errorcraft.itematic.item.component.ItemComponent; import net.errorcraft.itematic.item.component.ItemComponentType; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.component.ComponentMap; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.DamageResistantComponent; import net.minecraft.entity.damage.DamageType; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; @@ -33,6 +33,6 @@ public Codec codec() { @Override public void addComponents(ComponentMap.Builder builder) { - builder.add(ItematicDataComponentTypes.IMMUNE_TO_DAMAGE, new ImmuneToDamageComponent(this.damage)); + builder.add(DataComponentTypes.DAMAGE_RESISTANT, new DamageResistantComponent(this.damage)); } } diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/PotionItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/PotionItemComponent.java index a7c0fcea..6fee6ffc 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/PotionItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/PotionItemComponent.java @@ -8,11 +8,8 @@ import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.PotionContentsComponent; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; public record PotionItemComponent() implements ItemComponent { public static final PotionItemComponent INSTANCE = new PotionItemComponent(); @@ -30,20 +27,9 @@ public Codec codec() { @Override public void finishUsing(World world, LivingEntity user, ItemStack stack, int usedTicks, ItemStackConsumer resultStackConsumer) { - if (!world.isClient()) { - this.applyEffects(user, stack); - } - user.emitGameEvent(GameEvent.DRINK); - } - - private void applyEffects(LivingEntity target, ItemStack stack) { - PlayerEntity player = target instanceof PlayerEntity playerEntity ? playerEntity : null; - for (StatusEffectInstance effectInstance : stack.getOrDefault(DataComponentTypes.POTION_CONTENTS, PotionContentsComponent.DEFAULT).getEffects()) { - if (effectInstance.getEffectType().value().isInstant()) { - effectInstance.getEffectType().value().applyInstantEffect(player, player, target, effectInstance.getAmplifier(), 1.0d); - continue; - } - target.addStatusEffect(new StatusEffectInstance(effectInstance)); + PotionContentsComponent potionContents = stack.get(DataComponentTypes.POTION_CONTENTS); + if (potionContents != null) { + potionContents.apply(user); } } } diff --git a/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java b/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java index 98da25a6..768a5f05 100644 --- a/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java +++ b/src/main/java/net/errorcraft/itematic/item/group/entry/provider/ItemGroupEntryProviders.java @@ -238,7 +238,7 @@ public static void bootstrap(Registerable registerable) .add(items.getOrThrow(ItemKeys.BRUSH)) .add(items.getOrThrow(ItemKeys.NAME_TAG)) .add(items.getOrThrow(ItemKeys.LEAD)) - .add(items.getOrThrow(ItemKeys.BUNDLE)) + .add(ItematicItemTags.BUNDLES) .add(items.getOrThrow(ItemKeys.COMPASS)) .add(items.getOrThrow(ItemKeys.RECOVERY_COMPASS)) .add(items.getOrThrow(ItemKeys.CLOCK)) diff --git a/src/main/java/net/errorcraft/itematic/mixin/datafixer/SchemasExtender.java b/src/main/java/net/errorcraft/itematic/mixin/datafixer/SchemasExtender.java new file mode 100644 index 00000000..6086e25b --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/datafixer/SchemasExtender.java @@ -0,0 +1,26 @@ +package net.errorcraft.itematic.mixin.datafixer; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.datafixers.DataFixerBuilder; +import com.mojang.datafixers.schemas.Schema; +import net.errorcraft.itematic.util.datafix.fixes.ImmuneToDamageToDamageResistantComponentFix; +import net.minecraft.datafixer.Schemas; +import net.minecraft.datafixer.fix.FireResistantToDamageResistantComponentFix; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Schemas.class) +public class SchemasExtender { + @WrapOperation( + method = "build", + at = @At( + value = "NEW", + target = "(Lcom/mojang/datafixers/schemas/Schema;)Lnet/minecraft/datafixer/fix/FireResistantToDamageResistantComponentFix;" + ) + ) + private static FireResistantToDamageResistantComponentFix immuneToDamageToDamageResistantComponentFix(Schema outputSchema, Operation original, DataFixerBuilder builder) { + builder.addFixer(new ImmuneToDamageToDamageResistantComponentFix(outputSchema)); + return original.call(outputSchema); + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityExtender.java index 337c35ca..e8691fd9 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityExtender.java @@ -8,7 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.world.World; +import net.minecraft.server.world.ServerWorld; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -17,16 +17,13 @@ @Mixin(Entity.class) public abstract class EntityExtender implements EntityAccess { - @Shadow - private World world; - @Shadow @Nullable - public abstract ItemEntity dropStack(ItemStack stack); + public abstract ItemEntity dropStack(ServerWorld world, ItemStack stack); @Shadow @Nullable - public abstract ItemEntity dropStack(ItemStack stack, float yOffset); + public abstract ItemEntity dropStack(ServerWorld world, ItemStack stack, float yOffset); @Redirect( method = "interact", @@ -40,22 +37,22 @@ private boolean isOfForLeadUseRegistryKeyCheck(ItemStack instance, Item item) { } @Override - public ItemEntity itematic$dropItem(RegistryKey key) { - return this.dropStack(this.world.itematic$createStack(key)); + public ItemEntity itematic$dropItem(ServerWorld world, RegistryKey key) { + return this.dropStack(world, world.itematic$createStack(key)); } @Override - public ItemEntity itematic$dropItem(RegistryKey key, float yOffset) { - return this.dropStack(this.world.itematic$createStack(key), yOffset); + public ItemEntity itematic$dropItem(ServerWorld world, RegistryKey key, float yOffset) { + return this.dropStack(world, world.itematic$createStack(key), yOffset); } @Override - public ItemEntity itematic$dropItem(RegistryEntry entry) { - return this.dropStack(new ItemStack(entry)); + public ItemEntity itematic$dropItem(ServerWorld world, RegistryEntry entry) { + return this.dropStack(world, new ItemStack(entry)); } @Override - public ItemEntity itematic$dropItem(RegistryEntry entry, float yOffset) { - return this.dropStack(new ItemStack(entry), yOffset); + public ItemEntity itematic$dropItem(ServerWorld world, RegistryEntry entry, float yOffset) { + return this.dropStack(world, new ItemStack(entry), yOffset); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java index 8a5ef05b..7f385c00 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/EntityTypeExtender.java @@ -40,44 +40,6 @@ public abstract class EntityTypeExtender implements EntityType @Unique private ActionContext actionContext; - @ModifyArg( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/EntityType;register(Ljava/lang/String;Lnet/minecraft/entity/EntityType$Builder;)Lnet/minecraft/entity/EntityType;", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "CONSTANT", - args = "stringValue=boat" - ) - ) - ) - private static EntityType.Builder setBoatEntityInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(BoatEntityInitializer.CODEC); - return type; - } - - @ModifyArg( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/EntityType;register(Ljava/lang/String;Lnet/minecraft/entity/EntityType$Builder;)Lnet/minecraft/entity/EntityType;", - ordinal = 0 - ), - slice = @Slice( - from = @At( - value = "CONSTANT", - args = "stringValue=chest_boat" - ) - ) - ) - private static EntityType.Builder setChestBoatEntityInitializerCodec(EntityType.Builder type) { - type.itematic$initializerCodec(ChestBoatEntityInitializer.CODEC); - return type; - } - @ModifyArg( method = "", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/FallingBlockEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/FallingBlockEntityExtender.java index cf7d1285..f9f069a2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/FallingBlockEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/FallingBlockEntityExtender.java @@ -7,6 +7,7 @@ import net.minecraft.entity.FallingBlockEntity; import net.minecraft.entity.ItemEntity; import net.minecraft.item.ItemConvertible; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -22,10 +23,10 @@ public FallingBlockEntityExtender(EntityType type, World world) { method = "tick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/FallingBlockEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/FallingBlockEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemUseRegistryKey(FallingBlockEntity instance, ItemConvertible itemConvertible, @Local Block block) { - return this.itematic$dropItem(block.itematic$asItemKey()); + private ItemEntity dropItemUseRegistryKey(FallingBlockEntity instance, ServerWorld world, ItemConvertible itemConvertible, @Local Block block) { + return this.itematic$dropItem(world, block.itematic$asItemKey()); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/LeashableExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/LeashableExtender.java index 9edc4c42..b6e0d02b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/LeashableExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/LeashableExtender.java @@ -5,6 +5,7 @@ import net.minecraft.entity.ItemEntity; import net.minecraft.entity.Leashable; import net.minecraft.item.ItemConvertible; +import net.minecraft.server.world.ServerWorld; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -18,10 +19,10 @@ public interface LeashableExtender { }, at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/Entity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/Entity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private static ItemEntity dropItemForLeadUseRegistryKey(Entity instance, ItemConvertible item) { - return instance.itematic$dropItem(ItemKeys.LEAD); + private static ItemEntity dropItemForLeadUseRegistryKey(Entity instance, ServerWorld world, ItemConvertible item) { + return instance.itematic$dropItem(world, ItemKeys.LEAD); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/FarmerWorkTaskExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/FarmerWorkTaskExtender.java index 499b3171..d4c860fd 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/FarmerWorkTaskExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/FarmerWorkTaskExtender.java @@ -42,8 +42,8 @@ private ItemStack removeItemUseRegistryKey(SimpleInventory instance, Item item, target = "net/minecraft/item/ItemStack" ) ) - private ItemStack newItemStackForBreadUseCreateStack(ItemConvertible item, int count, VillagerEntity entity) { - return entity.getWorld().itematic$createStack(ItemKeys.BREAD, count); + private ItemStack newItemStackForBreadUseCreateStack(ItemConvertible item, int count, @Local(argsOnly = true) VillagerEntity villager) { + return villager.getWorld().itematic$createStack(ItemKeys.BREAD, count); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/boss/WitherEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/boss/WitherEntityExtender.java index bb0fc940..4b9092d7 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/boss/WitherEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/boss/WitherEntityExtender.java @@ -9,6 +9,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -25,11 +26,11 @@ protected WitherEntityExtender(EntityType entityType, W method = "dropEquipment", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/boss/WitherEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/boss/WitherEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForNetherStarUseRegistryKey(WitherEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.NETHER_STAR); + private ItemEntity dropItemForNetherStarUseRegistryKey(WitherEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.NETHER_STAR); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/PaintingEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/PaintingEntityExtender.java index 72ef0227..4a86f09a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/PaintingEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/decoration/PaintingEntityExtender.java @@ -7,6 +7,7 @@ import net.minecraft.entity.decoration.painting.PaintingEntity; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -22,11 +23,11 @@ protected PaintingEntityExtender(EntityType method = "onBreak", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/decoration/painting/PaintingEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/decoration/painting/PaintingEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForPaintingUseRegistryKey(PaintingEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.PAINTING); + private ItemEntity dropItemForPaintingUseRegistryKey(PaintingEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.PAINTING); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/CreeperEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/CreeperEntityExtender.java index 04746f64..d2ba6990 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/CreeperEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/CreeperEntityExtender.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -36,11 +37,11 @@ private boolean isOfForFireChargeUseRegistryKeyCheck(ItemStack instance, Item it method = "dropEquipment", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/mob/CreeperEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/mob/CreeperEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForCreeperHeadUseRegistryKey(CreeperEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.CREEPER_HEAD); + private ItemEntity dropItemForCreeperHeadUseRegistryKey(CreeperEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.CREEPER_HEAD); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SkeletonEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SkeletonEntityExtender.java index 8da0f749..8e499cbb 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SkeletonEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/SkeletonEntityExtender.java @@ -8,6 +8,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -24,11 +25,11 @@ protected SkeletonEntityExtender(EntityType en method = "dropEquipment", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/mob/SkeletonEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/mob/SkeletonEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForSkeletonSkullUseRegistryKey(SkeletonEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.SKELETON_SKULL); + private ItemEntity dropItemForSkeletonSkullUseRegistryKey(SkeletonEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.SKELETON_SKULL); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/WitherSkeletonEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/WitherSkeletonEntityExtender.java index 20e6738d..21fe1784 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/WitherSkeletonEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/WitherSkeletonEntityExtender.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -25,11 +26,11 @@ protected WitherSkeletonEntityExtender(EntityType method = "dropInventory", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/passive/AbstractDonkeyEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/passive/AbstractDonkeyEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForChestUseRegistryKey(AbstractDonkeyEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.CHEST); + private ItemEntity dropItemForChestUseRegistryKey(AbstractDonkeyEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.CHEST); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java index ab693fa0..3e3990d7 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/PigEntityExtender.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.tag.TagKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -81,11 +82,11 @@ private boolean isOfForSaddleUseRegistryKeyCheck(ItemStack instance, Item item) method = "dropInventory", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/passive/PigEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/passive/PigEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForSaddleUseRegistryKey(PigEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.SADDLE); + private ItemEntity dropItemForSaddleUseRegistryKey(PigEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.SADDLE); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/StriderEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/StriderEntityExtender.java index 35e0525d..e78b02b0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/StriderEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/StriderEntityExtender.java @@ -12,6 +12,7 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -40,11 +41,11 @@ private boolean isOfForSaddleUseRegistryKey(ItemStack instance, Item item) { method = "dropInventory", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/passive/StriderEntity;dropItem(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/passive/StriderEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForSaddleUseRegistryKey(StriderEntity instance, ItemConvertible itemConvertible) { - return this.itematic$dropItem(ItemKeys.SADDLE); + private ItemEntity dropItemForSaddleUseRegistryKey(StriderEntity instance, ServerWorld world, ItemConvertible itemConvertible) { + return this.itematic$dropItem(world, ItemKeys.SADDLE); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/TurtleEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/TurtleEntityExtender.java index 2fc247b8..8fc9fef2 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/TurtleEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/TurtleEntityExtender.java @@ -9,6 +9,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.registry.RegistryKey; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -25,11 +26,11 @@ protected TurtleEntityExtender(EntityType entityType, Wo method = "onGrowUp", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/passive/TurtleEntity;dropItem(Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/entity/ItemEntity;" + target = "Lnet/minecraft/entity/passive/TurtleEntity;dropItem(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/item/ItemConvertible;I)Lnet/minecraft/entity/ItemEntity;" ) ) - private ItemEntity dropItemForTurtleScuteUseRegistryKey(TurtleEntity instance, ItemConvertible itemConvertible, int yOffset) { - return this.itematic$dropItem(ItemKeys.TURTLE_SCUTE, yOffset); + private ItemEntity dropItemForTurtleScuteUseRegistryKey(TurtleEntity instance, ServerWorld world, ItemConvertible itemConvertible, int yOffset) { + return this.itematic$dropItem(world, ItemKeys.TURTLE_SCUTE, yOffset); } @Override diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java index a9d63e0b..018a4082 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/VillagerEntityExtender.java @@ -45,7 +45,7 @@ protected VillagerEntityExtender(EntityType entityType, remap = false ) ) - private boolean containsForGatherableItemsUseItemTagCheck(ImmutableSet instance, Object o, ItemStack stack) { + private boolean containsForGatherableItemsUseItemTagCheck(ImmutableSet instance, Object o, @Local(argsOnly = true) ItemStack stack) { TagKey tag = this.getVillagerData().getProfession().itematic$gatherableItemsTag(); if (tag == null) { return false; diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractBoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractBoatEntityExtender.java new file mode 100644 index 00000000..21064a40 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/AbstractBoatEntityExtender.java @@ -0,0 +1,52 @@ +package net.errorcraft.itematic.mixin.entity.vehicle; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.vehicle.AbstractBoatEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.function.Supplier; + +@Mixin(AbstractBoatEntity.class) +public abstract class AbstractBoatEntityExtender extends VehicleEntityExtender { + @Unique + private RegistryKey itemKey; + + public AbstractBoatEntityExtender(EntityType type, World world) { + super(type, world); + } + + @Inject( + method = "", + at = @At("TAIL") + ) + private void setItemKey(EntityType type, World world, Supplier itemSupplier, CallbackInfo info) { + this.itemKey = Registries.ITEM.getKey(itemSupplier.get()).orElseThrow(); + } + + @Redirect( + method = "getPickBlockStack", + at = @At( + value = "NEW", + target = "net/minecraft/item/ItemStack" + ) + ) + private ItemStack newItemStackUseCreateStack(ItemConvertible item) { + return this.getWorld().itematic$createStack(this.itemKey); + } + + @Override + protected RegistryKey asItemKey() { + return this.itemKey; + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java deleted file mode 100644 index 63a489d4..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/BoatEntityExtender.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.errorcraft.itematic.mixin.entity.vehicle; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.vehicle.BoatEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryKey; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(BoatEntity.class) -public abstract class BoatEntityExtender extends VehicleEntityExtender { - @Shadow - public abstract BoatEntity.Type getVariant(); - - public BoatEntityExtender(EntityType type, World world) { - super(type, world); - } - - @Redirect( - method = "getPickBlockStack", - at = @At( - value = "NEW", - target = "net/minecraft/item/ItemStack" - ) - ) - private ItemStack newItemStackUseCreateStack(ItemConvertible item) { - return this.getWorld().itematic$createStack(this.asItemKey()); - } - - @Override - protected RegistryKey asItemKey() { - return switch (this.getVariant()) { - case SPRUCE -> ItemKeys.SPRUCE_BOAT; - case BIRCH -> ItemKeys.BIRCH_BOAT; - case JUNGLE -> ItemKeys.JUNGLE_BOAT; - case ACACIA -> ItemKeys.ACACIA_BOAT; - case CHERRY -> ItemKeys.CHERRY_BOAT; - case DARK_OAK -> ItemKeys.DARK_OAK_BOAT; - case MANGROVE -> ItemKeys.MANGROVE_BOAT; - case BAMBOO -> ItemKeys.BAMBOO_RAFT; - default -> ItemKeys.OAK_BOAT; - }; - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java deleted file mode 100644 index ed992526..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/vehicle/ChestBoatEntityExtender.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.errorcraft.itematic.mixin.entity.vehicle; - -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.vehicle.BoatEntity; -import net.minecraft.entity.vehicle.ChestBoatEntity; -import net.minecraft.item.Item; -import net.minecraft.registry.RegistryKey; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(ChestBoatEntity.class) -public abstract class ChestBoatEntityExtender extends BoatEntityExtender { - public ChestBoatEntityExtender(EntityType entityType, World world) { - super(entityType, world); - } - - @Override - protected RegistryKey asItemKey() { - return switch (this.getVariant()) { - case SPRUCE -> ItemKeys.SPRUCE_CHEST_BOAT; - case BIRCH -> ItemKeys.BIRCH_CHEST_BOAT; - case JUNGLE -> ItemKeys.JUNGLE_CHEST_BOAT; - case ACACIA -> ItemKeys.ACACIA_CHEST_BOAT; - case CHERRY -> ItemKeys.CHERRY_CHEST_BOAT; - case DARK_OAK -> ItemKeys.DARK_OAK_CHEST_BOAT; - case MANGROVE -> ItemKeys.MANGROVE_CHEST_BOAT; - case BAMBOO -> ItemKeys.BAMBOO_CHEST_RAFT; - default -> ItemKeys.OAK_CHEST_BOAT; - }; - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java index 0b0f2f1d..31552d17 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java @@ -8,7 +8,6 @@ import com.mojang.serialization.Codec; import net.errorcraft.itematic.access.item.ItemStackAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; -import net.errorcraft.itematic.component.type.ImmuneToDamageComponent; import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.ItemUtil; import net.errorcraft.itematic.item.ItematicItemTags; @@ -32,7 +31,6 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; @@ -508,16 +506,6 @@ public void hasGlintCheckNullEntry(CallbackInfoReturnable info) { } } - /** - * @author ErrorCraft - * @reason Uses the ItemComponent implementation for data-driven items. - */ - @Overwrite - public boolean takesDamageFrom(DamageSource source) { - ImmuneToDamageComponent immuneToDamage = this.get(ItematicDataComponentTypes.IMMUNE_TO_DAMAGE); - return immuneToDamage == null || immuneToDamage.damage(source); - } - @Inject( method = "getItemName", at = @At("HEAD"), diff --git a/src/main/java/net/errorcraft/itematic/util/datafix/fixes/ImmuneToDamageToDamageResistantComponentFix.java b/src/main/java/net/errorcraft/itematic/util/datafix/fixes/ImmuneToDamageToDamageResistantComponentFix.java new file mode 100644 index 00000000..e833ffa1 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/util/datafix/fixes/ImmuneToDamageToDamageResistantComponentFix.java @@ -0,0 +1,24 @@ +package net.errorcraft.itematic.util.datafix.fixes; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import net.minecraft.datafixer.fix.ComponentFix; + +import java.util.Optional; + +public class ImmuneToDamageToDamageResistantComponentFix extends ComponentFix { + public ImmuneToDamageToDamageResistantComponentFix(Schema outputSchema) { + super(outputSchema, "ImmuneToDamageToDamageResistantComponentFix", "minecraft:immune_to_damage", "minecraft:damage_resistant"); + } + + @Override + protected Dynamic fixComponent(Dynamic dynamic) { + Optional types = dynamic.asString().result(); + if (types.isPresent()) { + return dynamic.emptyMap() + .set("types", dynamic.createString(types.get())); + } + + return dynamic; + } +} diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 189e6f5c..7c97cff2 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -92,6 +92,7 @@ "component.type.EquippableComponentExtender", "component.type.ToolComponentExtender", "component.type.ToolComponentExtender$RuleExtender", + "datafixer.SchemasExtender", "enchantment.EnchantmentHelperExtender", "entity.BucketableExtender", "entity.CrossbowUserExtender", @@ -239,8 +240,7 @@ "entity.projectile.thrown.ThrownItemEntityExtender", "entity.raid.RaiderEntityExtender", "entity.raid.RaiderEntityExtender$PickUpBannerAsLeaderGoalExtender", - "entity.vehicle.BoatEntityExtender", - "entity.vehicle.ChestBoatEntityExtender", + "entity.vehicle.AbstractBoatEntityExtender", "entity.vehicle.ChestMinecartEntityExtender", "entity.vehicle.CommandBlockMinecartEntityExtender", "entity.vehicle.FurnaceMinecartEntityExtender", From d9d7b595b2fd6b19411d53da77630c4de5a8e213 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Sat, 7 Feb 2026 02:34:23 +0100 Subject: [PATCH 08/11] Port to 24w40a --- gradle.properties | 6 +- .../recipebook/RecipeBookWidgetAccess.java | 7 - .../recipebook/RecipeBookGroupAccess.java | 13 -- .../recipebook/RecipeBookWidgetTabAccess.java | 11 ++ .../client/item/bar/ItemBarStyles.java | 10 +- .../client/item/bar/color/ColorProvider.java | 2 +- .../item/bar/color/ColorProviderTypeKeys.java | 1 + .../item/bar/color/ColorProviderTypes.java | 2 + .../FirstToPassConditionColorProvider.java | 60 ++++++++ .../mixin/client/gui/DrawContextExtender.java | 26 ++-- .../client/gui/hud/InGameHudExtender.java | 14 +- ...stractFurnaceRecipeBookScreenExtender.java | 34 ----- .../recipebook/RecipeBookWidgetExtender.java | 20 --- .../RecipeGroupButtonWidgetExtender.java | 31 +++- .../recipebook/RecipeBookGroupExtender.java | 141 ------------------ .../recipebook/RecipeBookWidgetExtender.java | 86 +++++++++++ ...PlayerHeldItemFeatureRendererExtender.java | 2 +- .../render/item/HeldItemRendererExtender.java | 2 +- .../render/item/ItemRendererExtender.java | 6 +- .../client/toast/RecipeToastExtender.java | 32 ---- .../resources/itematic.client.mixins.json | 5 +- .../mixin/gametest/TestServerExtender.java | 36 +++++ .../resources/itematic-gametest.mixins.json | 3 +- .../minecraft/item_bar_style/bundle.json | 18 ++- .../itematic/access/recipe/RecipeAccess.java | 9 +- .../itematic/item/placement/FluidPlacer.java | 21 ++- ...lExtender.java => TargetUtilExtender.java} | 6 +- .../entity/mob/EndermanEntityExtender.java | 11 -- .../entity/player/PlayerEntityExtender.java | 2 +- .../mixin/item/BundleItemAccessor.java | 5 + .../itematic/mixin/item/ItemExtender.java | 2 + .../recipe/AbstractCookingRecipeExtender.java | 42 ++++++ .../mixin/recipe/BlastingRecipeExtender.java | 13 +- .../recipe/BookCloningRecipeExtender.java | 4 +- .../recipe/CampfireCookingRecipeExtender.java | 13 +- .../recipe/FireworkRocketRecipeExtender.java | 14 -- .../recipe/FireworkStarRecipeExtender.java | 5 +- .../recipe/MapExtendingRecipeExtender.java | 2 +- .../itematic/mixin/recipe/RecipeExtender.java | 13 ++ .../recipe/ServerRecipeManagerExtender.java | 64 ++++++++ .../mixin/recipe/ShapedRecipeExtender.java | 35 ++++- .../mixin/recipe/ShapelessRecipeExtender.java | 26 +++- .../mixin/recipe/SmeltingRecipeExtender.java | 13 +- .../mixin/recipe/SmithingRecipeExtender.java | 17 --- .../SmithingTransformRecipeExtender.java | 21 ++- .../recipe/SmithingTrimRecipeExtender.java | 36 +++-- .../mixin/recipe/SmokingRecipeExtender.java | 13 +- .../recipe/StonecuttingRecipeExtender.java | 21 ++- .../mixin/recipe/TransmuteRecipeExtender.java | 65 +++++++- .../recipe/display/SlotDisplayExtender.java | 93 ++++++++++++ .../itematic/predicate/NumberRangeUtil.java | 36 +++++ .../predicate/item/ItemPredicateUtil.java | 14 +- src/main/resources/fabric.mod.json | 6 - src/main/resources/itematic.mixins.json | 9 +- 54 files changed, 783 insertions(+), 416 deletions(-) delete mode 100644 src/client/java/net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess.java delete mode 100644 src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookGroupAccess.java create mode 100644 src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookWidgetTabAccess.java create mode 100644 src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java create mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java delete mode 100644 src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java create mode 100644 src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java rename src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/{LookTargetUtilExtender.java => TargetUtilExtender.java} (95%) create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/ServerRecipeManagerExtender.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingRecipeExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java create mode 100644 src/main/java/net/errorcraft/itematic/predicate/NumberRangeUtil.java diff --git a/gradle.properties b/gradle.properties index 79fed29d..3a2b7427 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w39a - yarn_mappings=24w39a+build.8 + minecraft_version=24w40a + yarn_mappings=24w40a+build.11 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.105.1+1.21.2 + fabric_version=0.105.2+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess.java b/src/client/java/net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess.java deleted file mode 100644 index 8a38de2c..00000000 --- a/src/client/java/net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.errorcraft.itematic.access.client.gui.screen.recipebook; - -import net.minecraft.world.World; - -public interface RecipeBookWidgetAccess { - default void itematic$initializeRecipeSpecific(World world) {} -} diff --git a/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookGroupAccess.java b/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookGroupAccess.java deleted file mode 100644 index f29abee4..00000000 --- a/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookGroupAccess.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.access.client.recipebook; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registry; - -import java.util.List; - -public interface RecipeBookGroupAccess { - default List itematic$icons(Registry registry) { - return List.of(); - } -} diff --git a/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookWidgetTabAccess.java b/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookWidgetTabAccess.java new file mode 100644 index 00000000..5d95642b --- /dev/null +++ b/src/client/java/net/errorcraft/itematic/access/client/recipebook/RecipeBookWidgetTabAccess.java @@ -0,0 +1,11 @@ +package net.errorcraft.itematic.access.client.recipebook; + +import net.errorcraft.itematic.item.ItemAccess; +import net.minecraft.item.ItemStack; + +import java.util.Optional; + +public interface RecipeBookWidgetTabAccess { + ItemStack itematic$primaryIconItem(ItemAccess items); + Optional itematic$secondaryIconItem(ItemAccess items); +} diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyles.java b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyles.java index d7fff15a..e951af37 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyles.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/ItemBarStyles.java @@ -1,6 +1,6 @@ package net.errorcraft.itematic.client.item.bar; -import net.errorcraft.itematic.client.item.bar.color.provider.ConstantColorProvider; +import net.errorcraft.itematic.client.item.bar.color.provider.FirstToPassConditionColorProvider; import net.errorcraft.itematic.client.item.bar.color.provider.HueShiftColorProvider; import net.errorcraft.itematic.client.item.bar.progress.ProgressProvider; import net.errorcraft.itematic.item.ItemBarStyleKeys; @@ -36,7 +36,13 @@ public static void bootstrap(BiConsumer provider) { )); provider.accept(ItemBarStyleKeys.BUNDLE, new ItemBarStyle( ProgressProvider.ITEM_HOLDER_OCCUPANCY, - new ConstantColorProvider(BundleItemAccessor.itemBarColor()), + FirstToPassConditionColorProvider.of( + BundleItemAccessor.itemBarColor(), + FirstToPassConditionColorProvider.Entry.of( + BundleItemAccessor.fullItemBarColor(), + 1.0f + ) + ), List.of( Identifier.ofVanilla("item_bar/progress/0"), Identifier.ofVanilla("item_bar/progress/0"), diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProvider.java b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProvider.java index fe674385..4a5e51c7 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProvider.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProvider.java @@ -3,7 +3,7 @@ import com.mojang.serialization.Codec; public interface ColorProvider { - Codec CODEC = ColorProviderTypes.CODEC.dispatch(ColorProvider::type, ColorProviderType::codec); + Codec CODEC = Codec.lazyInitialized(() -> ColorProviderTypes.CODEC.dispatch(ColorProvider::type, ColorProviderType::codec)); ColorProviderType type(); int get(float progress); diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypeKeys.java b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypeKeys.java index e612b448..d8787fa2 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypeKeys.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypeKeys.java @@ -5,6 +5,7 @@ public class ColorProviderTypeKeys { public static final Identifier CONSTANT = of("constant"); public static final Identifier HUE_SHIFT = of("hue_shift"); + public static final Identifier FIRST_TO_PASS_CONDITION = of("first_to_pass_condition"); private ColorProviderTypeKeys() {} diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypes.java b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypes.java index ec3aaffc..e6d1b80c 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypes.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/color/ColorProviderTypes.java @@ -4,6 +4,7 @@ import com.mojang.serialization.DataResult; import com.mojang.serialization.MapCodec; import net.errorcraft.itematic.client.item.bar.color.provider.ConstantColorProvider; +import net.errorcraft.itematic.client.item.bar.color.provider.FirstToPassConditionColorProvider; import net.errorcraft.itematic.client.item.bar.color.provider.HueShiftColorProvider; import net.minecraft.util.Identifier; @@ -19,6 +20,7 @@ public class ColorProviderTypes { public static final ColorProviderType CONSTANT = register(ColorProviderTypeKeys.CONSTANT, ConstantColorProvider.CODEC); public static final ColorProviderType HUE_SHIFT = register(ColorProviderTypeKeys.HUE_SHIFT, HueShiftColorProvider.CODEC); + public static final ColorProviderType FIRST_TO_PASS_CONDITION = register(ColorProviderTypeKeys.FIRST_TO_PASS_CONDITION, FirstToPassConditionColorProvider.CODEC); private ColorProviderTypes() {} diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java b/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java new file mode 100644 index 00000000..12ea5feb --- /dev/null +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java @@ -0,0 +1,60 @@ +package net.errorcraft.itematic.client.item.bar.color.provider; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.errorcraft.itematic.client.item.bar.color.ColorProvider; +import net.errorcraft.itematic.client.item.bar.color.ColorProviderType; +import net.errorcraft.itematic.client.item.bar.color.ColorProviderTypes; +import net.errorcraft.itematic.predicate.NumberRangeUtil; +import net.minecraft.util.dynamic.Codecs; + +import java.util.List; + +public record FirstToPassConditionColorProvider(List entries, ColorProvider fallback) implements ColorProvider { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + Codecs.nonEmptyList(Entry.CODEC.listOf()).fieldOf("entries").forGetter(FirstToPassConditionColorProvider::entries), + ColorProvider.CODEC.fieldOf("fallback").forGetter(FirstToPassConditionColorProvider::fallback) + ).apply(instance, FirstToPassConditionColorProvider::new)); + + public static FirstToPassConditionColorProvider of(int fallback, Entry... entries) { + return new FirstToPassConditionColorProvider(List.of(entries), new ConstantColorProvider(fallback)); + } + + @Override + public ColorProviderType type() { + return ColorProviderTypes.FIRST_TO_PASS_CONDITION; + } + + @Override + public int get(float progress) { + for (Entry entry : this.entries) { + if (entry.condition.test(progress)) { + return entry.color.get(progress); + } + } + + return this.fallback.get(progress); + } + + public record Entry(ColorProvider color, Condition condition) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + ColorProvider.CODEC.fieldOf("color").forGetter(Entry::color), + Condition.CODEC.fieldOf("condition").forGetter(Entry::condition) + ).apply(instance, Entry::new)); + + public static Entry of(int color, float progress) { + return new Entry(new ConstantColorProvider(color), new Condition(NumberRangeUtil.FloatRange.exactly(progress))); + } + } + + public record Condition(NumberRangeUtil.FloatRange range) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + NumberRangeUtil.FloatRange.CODEC.fieldOf("range").forGetter(Condition::range) + ).apply(instance, Condition::new)); + + public boolean test(float progress) { + return this.range.test(progress); + } + } +} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java index 457a1cd7..13ffbb85 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java @@ -6,7 +6,6 @@ import net.errorcraft.itematic.client.item.bar.ItemBarStyleLoader; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumerProvider; @@ -46,7 +45,7 @@ private void setItemBarStyles(MinecraftClient client, MatrixStack matrices, Vert } @ModifyExpressionValue( - method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", + method = "drawItemBar", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isItemBarVisible()Z" @@ -57,28 +56,27 @@ private boolean useDataComponent(boolean original, @Local(argsOnly = true) ItemS if (itemBarStyleId == null) { return false; } - return this.itemBarStyles.get(itemBarStyleId).map(itemBarStyle -> itemBarStyle.isVisible(stack)) + + return this.itemBarStyles.get(itemBarStyleId) + .map(itemBarStyle -> itemBarStyle.isVisible(stack)) .orElse(false); } @Inject( - method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", + method = "drawItemBar", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getItemBarStep()I" ) ) - private void renderItemBarFromDataComponent(TextRenderer textRenderer, ItemStack stack, int x, int y, String countOverride, CallbackInfo info) { + private void renderItemBarFromDataComponent(ItemStack stack, int x, int y, CallbackInfo info) { Identifier itemBarStyleId = stack.get(ItematicDataComponentTypes.ITEM_BAR_STYLE); if (itemBarStyleId == null) { return; } this.itemBarStyles.get(itemBarStyleId).ifPresent(itemBarStyle -> { - if (stack.getCount() == 1 && countOverride == null) { - this.matrices.translate(0.0f, 0.0f, 200.0f); - } - + this.matrices.translate(0.0f, 0.0f, 200.0f); this.drawGuiTexture( RenderLayer::getGuiTextured, itemBarStyle.progressTexture(stack), @@ -92,21 +90,17 @@ private void renderItemBarFromDataComponent(TextRenderer textRenderer, ItemStack } @Redirect( - method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", + method = "drawItemBar", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/gui/DrawContext;fill(Lnet/minecraft/client/render/RenderLayer;IIIII)V" + target = "Lnet/minecraft/client/gui/DrawContext;fill(Lnet/minecraft/client/render/RenderLayer;IIIIII)V" ), slice = @Slice( from = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isItemBarVisible()Z" - ), - to = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/network/ClientPlayerEntity;getItemCooldownManager()Lnet/minecraft/entity/player/ItemCooldownManager;" ) ) ) - private void doNotRenderOriginalItemBar(DrawContext instance, RenderLayer layer, int x1, int y1, int x2, int y2, int color) {} + private void doNotRenderOriginalItemBar(DrawContext instance, RenderLayer layer, int x1, int y1, int x2, int y2, int z, int color) {} } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java index d2ced62c..7f4c8f79 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java @@ -1,23 +1,23 @@ package net.errorcraft.itematic.mixin.client.gui.hud; -import net.errorcraft.itematic.item.ItemKeys; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(InGameHud.class) public class InGameHudExtender { - @Redirect( + @ModifyExpressionValue( method = "renderMiscOverlays", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" + target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" ) ) - private boolean isOfForCarvedPumpkinUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.CARVED_PUMPKIN); + private boolean checkPresenceEquipmentBehavior(boolean original, @Local ItemStack stack) { + return original && stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java deleted file mode 100644 index a77be0c1..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/AbstractFurnaceRecipeBookScreenExtender.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.errorcraft.itematic.mixin.client.gui.screen.recipebook; - -import net.errorcraft.itematic.access.client.gui.screen.recipebook.RecipeBookWidgetAccess; -import net.errorcraft.itematic.item.component.ItemComponentTypes; -import net.minecraft.client.gui.screen.recipebook.AbstractFurnaceRecipeBookWidget; -import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.AbstractFurnaceScreenHandler; -import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.List; - -@Mixin(AbstractFurnaceRecipeBookWidget.class) -public abstract class AbstractFurnaceRecipeBookScreenExtender extends RecipeBookWidget implements RecipeBookWidgetAccess { - @Shadow - @Nullable - private List fuels; - - public AbstractFurnaceRecipeBookScreenExtender(AbstractFurnaceScreenHandler craftingScreenHandler) { - super(craftingScreenHandler); - } - - @Override - public void itematic$initializeRecipeSpecific(World world) { - this.fuels = world.itematic$getItemAccess() - .streamEntries() - .filter(reference -> reference.value().itematic$hasBehavior(ItemComponentTypes.FUEL)) - .map(ItemStack::new) - .toList(); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java deleted file mode 100644 index 86f555d3..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeBookWidgetExtender.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.errorcraft.itematic.mixin.client.gui.screen.recipebook; - -import net.errorcraft.itematic.access.client.gui.screen.recipebook.RecipeBookWidgetAccess; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(RecipeBookWidget.class) -public class RecipeBookWidgetExtender implements RecipeBookWidgetAccess { - @Inject( - method = "initialize", - at = @At("TAIL") - ) - private void initializeAllowRecipeSpecificInitialization(int parentWidth, int parentHeight, MinecraftClient client, boolean narrow, CallbackInfo info) { - this.itematic$initializeRecipeSpecific(client.world); - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java index 3715f13e..4213c2f0 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/recipebook/RecipeGroupButtonWidgetExtender.java @@ -1,16 +1,16 @@ package net.errorcraft.itematic.mixin.client.gui.screen.recipebook; +import net.errorcraft.itematic.access.client.recipebook.RecipeBookWidgetTabAccess; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.screen.recipebook.RecipeGroupButtonWidget; -import net.minecraft.client.recipebook.RecipeBookGroup; import net.minecraft.client.world.ClientWorld; import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryKeys; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import java.util.List; +import java.util.Optional; @Mixin(RecipeGroupButtonWidget.class) public class RecipeGroupButtonWidgetExtender { @@ -18,14 +18,31 @@ public class RecipeGroupButtonWidgetExtender { method = "renderIcons", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/recipebook/RecipeBookGroup;getIcons()Ljava/util/List;" + target = "Lnet/minecraft/client/gui/screen/recipebook/RecipeBookWidget$Tab;primaryIcon()Lnet/minecraft/item/ItemStack;" ) ) - private List stacks(RecipeBookGroup instance) { + private ItemStack primaryIcon(RecipeBookWidget.Tab instance) { ClientWorld world = MinecraftClient.getInstance().world; if (world == null) { - return List.of(); + return ItemStack.EMPTY; } - return instance.itematic$icons(world.getRegistryManager().getOrThrow(RegistryKeys.ITEM)); + + return ((RecipeBookWidgetTabAccess)(Object) instance).itematic$primaryIconItem(world.itematic$getItemAccess()); + } + + @Redirect( + method = "renderIcons", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/screen/recipebook/RecipeBookWidget$Tab;secondaryIcon()Ljava/util/Optional;" + ) + ) + private Optional secondaryIcon(RecipeBookWidget.Tab instance) { + ClientWorld world = MinecraftClient.getInstance().world; + if (world == null) { + return Optional.empty(); + } + + return ((RecipeBookWidgetTabAccess)(Object) instance).itematic$secondaryIconItem(world.itematic$getItemAccess()); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java deleted file mode 100644 index bc695ba8..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookGroupExtender.java +++ /dev/null @@ -1,141 +0,0 @@ -package net.errorcraft.itematic.mixin.client.recipebook; - -import net.errorcraft.itematic.access.client.recipebook.RecipeBookGroupAccess; -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.client.recipebook.RecipeBookGroup; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import java.util.ArrayList; -import java.util.List; - -@Mixin(RecipeBookGroup.class) -public class RecipeBookGroupExtender implements RecipeBookGroupAccess { - @Shadow - @Final - public static RecipeBookGroup CRAFTING_SEARCH; - - @Shadow - @Final - public static RecipeBookGroup CRAFTING_BUILDING_BLOCKS; - - @Shadow - @Final - public static RecipeBookGroup CRAFTING_REDSTONE; - - @Shadow - @Final - public static RecipeBookGroup CRAFTING_EQUIPMENT; - - @Shadow - @Final - public static RecipeBookGroup CRAFTING_MISC; - - @Shadow - @Final - public static RecipeBookGroup FURNACE_SEARCH; - - @Shadow - @Final - public static RecipeBookGroup FURNACE_FOOD; - - @Shadow - @Final - public static RecipeBookGroup FURNACE_BLOCKS; - - @Shadow - @Final - public static RecipeBookGroup FURNACE_MISC; - - @Shadow - @Final - public static RecipeBookGroup BLAST_FURNACE_SEARCH; - - @Shadow - @Final - public static RecipeBookGroup BLAST_FURNACE_BLOCKS; - - @Shadow - @Final - public static RecipeBookGroup BLAST_FURNACE_MISC; - - @Shadow - @Final - public static RecipeBookGroup SMOKER_SEARCH; - - @Shadow - @Final - public static RecipeBookGroup SMOKER_FOOD; - - @Shadow - @Final - public static RecipeBookGroup STONECUTTER; - - @Shadow - @Final - public static RecipeBookGroup SMITHING; - - @Shadow - @Final - public static RecipeBookGroup CAMPFIRE; - - @Shadow - @Final - public static RecipeBookGroup UNKNOWN; - - @Unique - private List> iconKeys; - - static { - ((RecipeBookGroupExtender)(Object) CRAFTING_SEARCH).iconKeys = List.of(ItemKeys.COMPASS); - ((RecipeBookGroupExtender)(Object) CRAFTING_BUILDING_BLOCKS).iconKeys = List.of(ItemKeys.BRICKS); - ((RecipeBookGroupExtender)(Object) CRAFTING_REDSTONE).iconKeys = List.of(ItemKeys.REDSTONE); - ((RecipeBookGroupExtender)(Object) CRAFTING_EQUIPMENT).iconKeys = List.of(ItemKeys.IRON_AXE, ItemKeys.GOLDEN_SWORD); - ((RecipeBookGroupExtender)(Object) CRAFTING_MISC).iconKeys = List.of(ItemKeys.LAVA_BUCKET, ItemKeys.APPLE); - ((RecipeBookGroupExtender)(Object) FURNACE_SEARCH).iconKeys = List.of(ItemKeys.COMPASS); - ((RecipeBookGroupExtender)(Object) FURNACE_FOOD).iconKeys = List.of(ItemKeys.PORKCHOP); - ((RecipeBookGroupExtender)(Object) FURNACE_BLOCKS).iconKeys = List.of(ItemKeys.STONE); - ((RecipeBookGroupExtender)(Object) FURNACE_MISC).iconKeys = List.of(ItemKeys.LAVA_BUCKET, ItemKeys.EMERALD); - ((RecipeBookGroupExtender)(Object) BLAST_FURNACE_SEARCH).iconKeys = List.of(ItemKeys.COMPASS); - ((RecipeBookGroupExtender)(Object) BLAST_FURNACE_BLOCKS).iconKeys = List.of(ItemKeys.REDSTONE_ORE); - ((RecipeBookGroupExtender)(Object) BLAST_FURNACE_MISC).iconKeys = List.of(ItemKeys.IRON_SHOVEL, ItemKeys.GOLDEN_LEGGINGS); - ((RecipeBookGroupExtender)(Object) SMOKER_SEARCH).iconKeys = List.of(ItemKeys.COMPASS); - ((RecipeBookGroupExtender)(Object) SMOKER_FOOD).iconKeys = List.of(ItemKeys.PORKCHOP); - ((RecipeBookGroupExtender)(Object) STONECUTTER).iconKeys = List.of(ItemKeys.CHISELED_STONE_BRICKS); - ((RecipeBookGroupExtender)(Object) SMITHING).iconKeys = List.of(ItemKeys.NETHERITE_CHESTPLATE); - ((RecipeBookGroupExtender)(Object) CAMPFIRE).iconKeys = List.of(ItemKeys.PORKCHOP); - ((RecipeBookGroupExtender)(Object) UNKNOWN).iconKeys = List.of(ItemKeys.BARRIER); - } - - @Redirect( - method = "", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private static ItemStack newItemStackReturnEmptyStack(ItemConvertible item) { - return ItemStack.EMPTY; - } - - @Override - public List itematic$icons(Registry registry) { - List stacks = new ArrayList<>(); - for (RegistryKey item : this.iconKeys) { - registry.getOptional(item) - .map(ItemStack::new) - .ifPresent(stacks::add); - } - - return stacks; - } -} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java new file mode 100644 index 00000000..b5fb98b7 --- /dev/null +++ b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java @@ -0,0 +1,86 @@ +package net.errorcraft.itematic.mixin.client.recipebook; + +import net.errorcraft.itematic.access.client.recipebook.RecipeBookWidgetTabAccess; +import net.errorcraft.itematic.item.ItemAccess; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; +import net.minecraft.client.recipebook.RecipeBookType; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.book.RecipeBookGroup; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Optional; + +public class RecipeBookWidgetExtender { + @Mixin(RecipeBookWidget.Tab.class) + public static class TabExtender implements RecipeBookWidgetTabAccess { + @Unique + private RegistryKey primaryIconItem; + @Unique + private Optional> secondaryIconItem; + + @Redirect( + method = { + "(Lnet/minecraft/client/recipebook/RecipeBookType;)V", + "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", + "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V" + }, + at = @At( + value = "NEW", + target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" + ) + ) + private static ItemStack newItemStackUseEmptyItemStack(ItemConvertible item) { + return ItemStack.EMPTY; + } + + @Inject( + method = "(Lnet/minecraft/client/recipebook/RecipeBookType;)V", + at = @At("TAIL") + ) + private void setIcons(RecipeBookType type, CallbackInfo info) { + this.primaryIconItem = ItemKeys.COMPASS; + this.secondaryIconItem = Optional.empty(); + } + + @Inject( + method = "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", + at = @At("TAIL") + ) + private void setIcons(Item primaryIcon, RecipeBookGroup group, CallbackInfo info) { + this.primaryIconItem = Registries.ITEM.getKey(primaryIcon).orElseThrow(); + this.secondaryIconItem = Optional.empty(); + } + + @Inject( + method = "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", + at = @At("TAIL") + ) + private void setIcons(Item primaryIcon, Item secondaryIcon, RecipeBookGroup group, CallbackInfo info) { + this.primaryIconItem = Registries.ITEM.getKey(primaryIcon).orElseThrow(); + this.secondaryIconItem = Optional.of(Registries.ITEM.getKey(secondaryIcon).orElseThrow()); + } + + @Override + public ItemStack itematic$primaryIconItem(ItemAccess items) { + return items.getOptionalEntry(this.primaryIconItem) + .map(ItemStack::new) + .orElse(ItemStack.EMPTY); + } + + @Override + public Optional itematic$secondaryIconItem(ItemAccess items) { + return this.secondaryIconItem.flatMap(items::getOptionalEntry) + .map(ItemStack::new); + } + } +} diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java index ace6e0f4..f1083acc 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/entity/feature/PlayerHeldItemFeatureRendererExtender.java @@ -11,7 +11,7 @@ @Mixin(PlayerHeldItemFeatureRenderer.class) public class PlayerHeldItemFeatureRendererExtender { @Redirect( - method = "renderItem(Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;Lnet/minecraft/util/Arm;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", + method = "renderItem(Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/util/Arm;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java index 9938f26b..8c196845 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/HeldItemRendererExtender.java @@ -136,7 +136,7 @@ private int getUseTimeLeftForCrossbowUseNegatedUsedTicks(AbstractClientPlayerEnt slice = @Slice( from = @At( value = "INVOKE", - target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", + target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", ordinal = 0 ) ) diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java index 41fac845..d0dc8765 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/render/item/ItemRendererExtender.java @@ -14,8 +14,8 @@ public class ItemRendererExtender { @Redirect( method = { - "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", - "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V" + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", + "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V" }, at = @At( value = "INVOKE", @@ -35,7 +35,7 @@ private boolean isOfForTridentUseRegistryKeyCheck(ItemStack instance, Item item) } @Redirect( - method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", + method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z", diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java deleted file mode 100644 index 1e8a0f34..00000000 --- a/src/client/java/net/errorcraft/itematic/mixin/client/toast/RecipeToastExtender.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.errorcraft.itematic.mixin.client.toast; - -import com.llamalad7.mixinextras.sugar.Local; -import net.errorcraft.itematic.access.recipe.RecipeAccess; -import net.minecraft.client.toast.RecipeToast; -import net.minecraft.client.toast.ToastManager; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; -import net.minecraft.registry.RegistryKeys; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(RecipeToast.class) -public class RecipeToastExtender { - @Redirect( - method = "show", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/recipe/Recipe;createIcon()Lnet/minecraft/item/ItemStack;" - ) - ) - private static ItemStack createIconUseDynamicRegistry(Recipe instance, @Local(argsOnly = true) ToastManager manager) { - ClientWorld world = manager.getClient().world; - if (world == null) { - return ItemStack.EMPTY; - } - - return ((RecipeAccess) instance).itematic$createIcon(world.getRegistryManager().getOrThrow(RegistryKeys.ITEM)); - } -} diff --git a/src/client/resources/itematic.client.mixins.json b/src/client/resources/itematic.client.mixins.json index d5d09006..de424674 100644 --- a/src/client/resources/itematic.client.mixins.json +++ b/src/client/resources/itematic.client.mixins.json @@ -25,8 +25,6 @@ "gui.screen.ingame.CreativeInventoryScreenExtender", "gui.screen.ingame.LoomScreenExtender", "gui.screen.ingame.SmithingScreenExtender", - "gui.screen.recipebook.AbstractFurnaceRecipeBookScreenExtender", - "gui.screen.recipebook.RecipeBookWidgetExtender", "gui.screen.recipebook.RecipeGroupButtonWidgetExtender", "gui.screen.world.LevelScreenProviderExtender", "gui.screen.world.PresetsScreenExtender$SuperflatPresetsListWidgetExtender$SuperflatPresetEntryExtender", @@ -40,7 +38,7 @@ "option.HotbarStorageEntryExtender", "particle.CrackParticleExtender$SlimeballFactoryExtender", "particle.CrackParticleExtender$SnowballFactoryExtender", - "recipebook.RecipeBookGroupExtender", + "recipebook.RecipeBookWidgetExtender$TabExtender", "render.block.BlockRenderManagerExtender", "render.block.entity.DecoratedPotBlockEntityRendererExtender", "render.entity.FishingBobberEntityRendererExtender", @@ -60,7 +58,6 @@ "render.item.HeldItemRendererExtender", "render.item.ItemRendererExtender", "render.model.json.ModelOverrideListExtender", - "toast.RecipeToastExtender", "tutorial.CraftPlanksTutorialStepHandlerExtender", "world.ClientWorldExtender", "world.WorldEventHandlerExtender" diff --git a/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java b/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java new file mode 100644 index 00000000..e7fe67f9 --- /dev/null +++ b/src/gametest/java/net/errorcraft/itematic/mixin/gametest/TestServerExtender.java @@ -0,0 +1,36 @@ +package net.errorcraft.itematic.mixin.gametest; + +import net.minecraft.resource.featuretoggle.FeatureFlags; +import net.minecraft.resource.featuretoggle.FeatureManager; +import net.minecraft.resource.featuretoggle.FeatureSet; +import net.minecraft.test.TestServer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(TestServer.class) +public class TestServerExtender { + @Redirect( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/resource/featuretoggle/FeatureManager;getFeatureSet()Lnet/minecraft/resource/featuretoggle/FeatureSet;" + ) + ) + private static FeatureSet doNotUseExperimentalFeatures(FeatureManager instance) { + return FeatureFlags.VANILLA_FEATURES; + } + + @ModifyArg( + method = "create", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/server/SaveLoading$DataPacks;(Lnet/minecraft/resource/ResourcePackManager;Lnet/minecraft/resource/DataConfiguration;ZZ)V" + ), + index = 3 + ) + private static boolean doNotUseExperimentalFeatures(boolean initMode) { + return false; + } +} diff --git a/src/gametest/resources/itematic-gametest.mixins.json b/src/gametest/resources/itematic-gametest.mixins.json index 2af60b5a..23487eb3 100644 --- a/src/gametest/resources/itematic-gametest.mixins.json +++ b/src/gametest/resources/itematic-gametest.mixins.json @@ -9,7 +9,8 @@ "mixins": [ "GameTestStateExtender", "StructureTestListenerExtender", - "TestContextExtender" + "TestContextExtender", + "TestServerExtender" ], "injectors": { "defaultRequire": 1 diff --git a/src/main/generated/assets/minecraft/item_bar_style/bundle.json b/src/main/generated/assets/minecraft/item_bar_style/bundle.json index 49cc3695..98352823 100644 --- a/src/main/generated/assets/minecraft/item_bar_style/bundle.json +++ b/src/main/generated/assets/minecraft/item_bar_style/bundle.json @@ -1,7 +1,21 @@ { "color": { - "type": "minecraft:constant", - "color": -9402369 + "type": "minecraft:first_to_pass_condition", + "entries": [ + { + "color": { + "type": "minecraft:constant", + "color": -43948 + }, + "condition": { + "range": 1.0 + } + } + ], + "fallback": { + "type": "minecraft:constant", + "color": -9402369 + } }, "progress": "minecraft:item_holder_occupancy", "textures": [ diff --git a/src/main/java/net/errorcraft/itematic/access/recipe/RecipeAccess.java b/src/main/java/net/errorcraft/itematic/access/recipe/RecipeAccess.java index ba4a26b8..ed0093b8 100644 --- a/src/main/java/net/errorcraft/itematic/access/recipe/RecipeAccess.java +++ b/src/main/java/net/errorcraft/itematic/access/recipe/RecipeAccess.java @@ -1,12 +1,13 @@ package net.errorcraft.itematic.access.recipe; -import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.recipe.display.RecipeDisplay; import net.minecraft.registry.RegistryEntryLookup; +import java.util.List; + public interface RecipeAccess { - default ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.CRAFTING_TABLE)); + default List itematic$displays(RegistryEntryLookup items) { + return null; } } diff --git a/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java b/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java index 15b68d97..bcca8b7c 100644 --- a/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java +++ b/src/main/java/net/errorcraft/itematic/item/placement/FluidPlacer.java @@ -51,13 +51,16 @@ public ItemResult place() { if (this.player != null && (!this.world.canPlayerModifyAt(this.player, this.blockPos) || !this.player.canPlaceOn(offset, this.direction, this.stack))) { return ItemResult.PASS; } + if (this.fluid.matchesKey(FluidKeys.EMPTY)) { return this.tryDrainFluid(); } + BlockPos actualBlockPos = this.getActualPosition(offset); if (!this.tryPlaceFluid(actualBlockPos, this.allowOffset)) { return ItemResult.PASS; } + return ItemResult.SUCCEED; } @@ -65,9 +68,11 @@ private BlockPos getActualPosition(BlockPos offset) { if (!this.allowOffset) { return this.blockPos; } + if (this.blockState.getBlock() instanceof FluidFillable && this.fluid.matchesKey(FluidKeys.WATER)) { return this.blockPos; } + return offset; } @@ -75,10 +80,12 @@ private ItemResult tryDrainFluid() { if (!(this.blockState.getBlock() instanceof FluidDrainable fluidDrainable)) { return ItemResult.PASS; } + ItemStack drainedItemStack = fluidDrainable.tryDrainFluid(this.player, this.world, this.blockPos, this.blockState); if (drainedItemStack.isEmpty()) { return ItemResult.PASS; } + this.applyPlayerEffects(fluidDrainable, drainedItemStack); this.world.emitGameEvent(this.player, GameEvent.FLUID_PICKUP, this.blockPos); this.resultStackConsumer.set(drainedItemStack); @@ -103,24 +110,30 @@ private boolean tryPlaceFluid(BlockPos pos, boolean allowOffset) { if (!(fluid instanceof FlowableFluid flowableFluid)) { return false; } + BlockState blockState = this.world.getBlockState(pos); boolean canPlace = blockState.canBucketPlace(fluid); if (!blockState.isAir() && !canPlace && !(blockState.getBlock() instanceof FluidFillable fluidFillable && fluidFillable.canFillWithFluid(this.player, this.world, pos, blockState, fluid))) { return allowOffset && this.tryPlaceFluid(this.blockPos.offset(this.direction), false); } + if (this.tryEvaporate(pos)) { return true; } + if (this.tryFillWater(blockState, pos, flowableFluid)) { return true; } + if (!this.world.isClient() && canPlace && !blockState.isLiquid()) { this.world.breakBlock(pos, true); } + if (this.world.setBlockState(pos, fluid.getDefaultState().getBlockState(), Block.NOTIFY_ALL_AND_REDRAW) || blockState.getFluidState().isStill()) { this.playEmptyingSound(pos); return true; } + return false; } @@ -128,13 +141,16 @@ private boolean tryEvaporate(BlockPos pos) { if (!this.world.getDimension().ultrawarm()) { return false; } + if (!this.fluid.isIn(FluidTags.WATER)) { return false; } + this.world.playSound(this.player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5f, 2.6f + (this.world.random.nextFloat() - this.world.random.nextFloat()) * 0.8f); - for (int i = 0; i < 8; ++i) { + for (int i = 0; i < 8; i++) { this.world.addParticle(ParticleTypes.LARGE_SMOKE, pos.getX() + Math.random(), pos.getY() + Math.random(), pos.getZ() + Math.random(), 0.0d, 0.0d, 0.0d); } + return true; } @@ -142,9 +158,11 @@ private boolean tryFillWater(BlockState blockState, BlockPos pos, FlowableFluid if (!(blockState.getBlock() instanceof FluidFillable fluidFillable)) { return false; } + if (!this.fluid.matchesKey(FluidKeys.WATER)) { return false; } + fluidFillable.tryFillWithFluid(this.world, pos, blockState, flowableFluid.getStill(false)); this.playEmptyingSound(pos); return true; @@ -154,6 +172,7 @@ private void playEmptyingSound(BlockPos pos) { if (this.emptyingSound == null) { return; } + this.world.playSound(this.player, pos, this.emptyingSound.value(), SoundCategory.BLOCKS, 1.0f, 1.0f); this.world.emitGameEvent(this.player, GameEvent.FLUID_PLACE, pos); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/TargetUtilExtender.java similarity index 95% rename from src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java rename to src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/TargetUtilExtender.java index 1d8822c6..48a6b768 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/LookTargetUtilExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/ai/brain/task/TargetUtilExtender.java @@ -4,7 +4,7 @@ import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.errorcraft.itematic.item.component.components.ShooterItemComponent; -import net.minecraft.entity.ai.brain.task.LookTargetUtil; +import net.minecraft.entity.ai.brain.task.TargetUtil; import net.minecraft.entity.mob.MobEntity; import net.minecraft.item.Item; import net.minecraft.item.RangedWeaponItem; @@ -13,8 +13,8 @@ import java.util.Optional; -@Mixin(LookTargetUtil.class) -public class LookTargetUtilExtender { +@Mixin(TargetUtil.class) +public class TargetUtilExtender { @ModifyConstant( method = "isTargetWithinAttackRange", constant = @Constant( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/EndermanEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/EndermanEntityExtender.java index 946cdf71..180dfeb6 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/EndermanEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/EndermanEntityExtender.java @@ -20,17 +20,6 @@ protected EndermanEntityExtender(EntityType entityType, super(entityType, world); } - @Redirect( - method = "isPlayerStaring", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForCarvedPumpkinUseRegistryKeyCheck(ItemStack instance, Item item) { - return instance.itematic$isOf(ItemKeys.CARVED_PUMPKIN); - } - @Redirect( method = "dropEquipment", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java index 56e3d9c5..5e917a14 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/player/PlayerEntityExtender.java @@ -139,7 +139,7 @@ private boolean isOfUseItemComponentCheck(ItemStack instance, Item item) { } ItemListDataComponent ammunition = stack.getOrDefault(ItematicDataComponentTypes.SHOOTER_AMMUNITION, ItemListDataComponent.DEFAULT); - for (int i = 0; i < this.inventory.size(); ++i) { + for (int i = 0; i < this.inventory.size(); i++) { ItemStack inventoryStack = this.inventory.getStack(i); if (ammunition.isValidFor(inventoryStack)) { return inventoryStack; diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java index 63f7da5b..0c0ab128 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java @@ -11,6 +11,11 @@ static int itemBarColor() { throw new AssertionError(); } + @Accessor("FULL_ITEM_BAR_COLOR") + static int fullItemBarColor() { + throw new AssertionError(); + } + @Accessor("field_54109") static int ticksAfterFirstThrow() { throw new AssertionError(); diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index 13cd2ed9..d800193b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -1,5 +1,6 @@ package net.errorcraft.itematic.mixin.item; +import com.google.common.annotations.VisibleForTesting; import net.errorcraft.itematic.access.item.ItemAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.UseDurationDataComponent; @@ -492,6 +493,7 @@ public int getMaxUseTime(ItemStack stack, LivingEntity user) { * @reason Uses the ItemDisplay implementation for data-driven items. */ @Overwrite + @VisibleForTesting public final String getTranslationKey() { return this.display.translationKey(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java new file mode 100644 index 00000000..08c02b35 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java @@ -0,0 +1,42 @@ +package net.errorcraft.itematic.mixin.recipe; + +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.AbstractCookingRecipe; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.SingleStackRecipe; +import net.minecraft.recipe.display.FurnaceRecipeDisplay; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.registry.RegistryKey; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +import java.util.List; + +@Mixin(AbstractCookingRecipe.class) +public abstract class AbstractCookingRecipeExtender extends SingleStackRecipe implements RecipeAccess { + public AbstractCookingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new FurnaceRecipeDisplay( + this.ingredient().toDisplay(), + SlotDisplay.AnyFuelSlotDisplay.INSTANCE, + new SlotDisplay.StackSlotDisplay(this.result()), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(this.cookerItemKey())) + ) + ); + } + + @Unique + protected RegistryKey cookerItemKey() { + return ItemKeys.FURNACE; + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BlastingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BlastingRecipeExtender.java index e1c13f85..6e6412d0 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BlastingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BlastingRecipeExtender.java @@ -5,13 +5,18 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.BlastingRecipe; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.recipe.Ingredient; +import net.minecraft.registry.RegistryKey; import org.spongepowered.asm.mixin.Mixin; @Mixin(BlastingRecipe.class) -public class BlastingRecipeExtender implements RecipeAccess { +public abstract class BlastingRecipeExtender extends AbstractCookingRecipeExtender implements RecipeAccess { + public BlastingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + @Override - public ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.BLAST_FURNACE)); + protected RegistryKey cookerItemKey() { + return ItemKeys.BLAST_FURNACE; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java index c055637e..ef2829c5 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BookCloningRecipeExtender.java @@ -51,12 +51,12 @@ private boolean isOfForWritableBookUseRegistryKeyCheck(ItemStack instance, Item } @ModifyConstant( - method = "getRemainder(Lnet/minecraft/recipe/input/CraftingRecipeInput;)Lnet/minecraft/util/collection/DefaultedList;", + method = "getRecipeRemainders", constant = @Constant( classValue = WrittenBookItem.class ) ) - private boolean instanceOfWrittenBookItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack inputStack) { + private boolean instanceOfWrittenBookItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 0) ItemStack inputStack) { return inputStack.itematic$hasBehavior(ItemComponentTypes.TEXT_HOLDER); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/CampfireCookingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/CampfireCookingRecipeExtender.java index 3a233079..f13992be 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/CampfireCookingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/CampfireCookingRecipeExtender.java @@ -5,13 +5,18 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.CampfireCookingRecipe; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.recipe.Ingredient; +import net.minecraft.registry.RegistryKey; import org.spongepowered.asm.mixin.Mixin; @Mixin(CampfireCookingRecipe.class) -public class CampfireCookingRecipeExtender implements RecipeAccess { +public abstract class CampfireCookingRecipeExtender extends AbstractCookingRecipeExtender implements RecipeAccess { + public CampfireCookingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + @Override - public ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.CAMPFIRE)); + protected RegistryKey cookerItemKey() { + return ItemKeys.CAMPFIRE; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java index 58afab6a..b3bbedab 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkRocketRecipeExtender.java @@ -85,18 +85,4 @@ private ItemStack newItemStackForFireworkRocketUseRegistryEntry(ItemConvertible .map(entry -> new ItemStack(entry, count)) .orElse(ItemStack.EMPTY); } - - @Redirect( - method = "getResult", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForFireworkRocketUseRegistryEntry(ItemConvertible item, RegistryWrapper.WrapperLookup lookup) { - return lookup.getOrThrow(RegistryKeys.ITEM) - .getOptional(ItemKeys.FIREWORK_ROCKET) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java index 23a8d7ca..1c411928 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java @@ -168,10 +168,7 @@ private DyeColor getColorUseItemComponent(DyeItem instance, @Share("dyeItemCompo } @Redirect( - method = { - "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", - "getResult" - }, + method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At( value = "NEW", target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java index 5a912ccb..cec29603 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/MapExtendingRecipeExtender.java @@ -37,7 +37,7 @@ private static ItemStack newItemStackForMapReturnEmptyStack(ItemConvertible item ) ) private boolean matchesUseRegistryKeyCheck(ShapedRecipe instance, CraftingRecipeInput input, World world) { - for (int i = 0; i < input.getStackCount(); ++i) { + for (int i = 0; i < input.getStackCount(); i++) { ItemStack stack = input.getStackInSlot(i); if (!isValid(stack, i)) { return false; diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java index 262eca52..b8b4ff83 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/RecipeExtender.java @@ -1,9 +1,22 @@ package net.errorcraft.itematic.mixin.recipe; import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.minecraft.item.Item; import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.registry.RegistryEntryLookup; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.List; @Mixin(Recipe.class) public interface RecipeExtender extends RecipeAccess { + @Shadow + List getDisplays(); + + @Override + default List itematic$displays(RegistryEntryLookup items) { + return this.getDisplays(); + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ServerRecipeManagerExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ServerRecipeManagerExtender.java new file mode 100644 index 00000000..0f6b91a8 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ServerRecipeManagerExtender.java @@ -0,0 +1,64 @@ +package net.errorcraft.itematic.mixin.recipe; + +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.minecraft.item.Item; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.ServerRecipeManager; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.resource.featuretoggle.FeatureSet; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(ServerRecipeManager.class) +public class ServerRecipeManagerExtender { + @Shadow + @Final + private RegistryWrapper.WrapperLookup registries; + + @Unique + private static RegistryWrapper.Impl tempItemLookup; + + @Inject( + method = "initialize", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/recipe/ServerRecipeManager;collectServerRecipes(Ljava/lang/Iterable;Lnet/minecraft/resource/featuretoggle/FeatureSet;)Ljava/util/List;" + ) + ) + private void setTempItemLookup(FeatureSet features, CallbackInfo info) { + tempItemLookup = this.registries.getOrThrow(RegistryKeys.ITEM); + } + + @Redirect( + method = "collectServerRecipes", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/recipe/Recipe;getDisplays()Ljava/util/List;" + ) + ) + private static List getDisplaysUseDynamicRegistry(Recipe instance) { + return ((RecipeAccess) instance).itematic$displays(tempItemLookup); + } + + @Inject( + method = "initialize", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/recipe/ServerRecipeManager;collectServerRecipes(Ljava/lang/Iterable;Lnet/minecraft/resource/featuretoggle/FeatureSet;)Ljava/util/List;", + shift = At.Shift.AFTER + ) + ) + private void resetTempItemLookup(FeatureSet features, CallbackInfo info) { + tempItemLookup = null; + } +} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java index ee1749a2..19df91ab 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapedRecipeExtender.java @@ -1,24 +1,55 @@ package net.errorcraft.itematic.mixin.recipe; import net.errorcraft.itematic.access.recipe.RawShapedRecipeAccess; +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.CraftingRecipe; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RawShapedRecipe; import net.minecraft.recipe.ShapedRecipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.ShapedCraftingRecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.util.collection.DefaultedList; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import java.util.List; + @Mixin(ShapedRecipe.class) -public abstract class ShapedRecipeExtender implements CraftingRecipe { +public abstract class ShapedRecipeExtender implements CraftingRecipe, RecipeAccess { @Shadow @Final RawShapedRecipe raw; + @Shadow + @Final + ItemStack result; + @Override - public DefaultedList getRemainder(CraftingRecipeInput input) { + public DefaultedList getRecipeRemainders(CraftingRecipeInput input) { return ((RawShapedRecipeAccess)(Object) this.raw).itematic$remainder(input); } + + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new ShapedCraftingRecipeDisplay( + this.raw.getWidth(), + this.raw.getHeight(), + this.raw.getIngredients() + .stream() + .map(ingredient -> ingredient.map(Ingredient::toDisplay) + .orElse(SlotDisplay.EmptySlotDisplay.INSTANCE)) + .toList(), + new SlotDisplay.StackSlotDisplay(this.result), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.CRAFTING_TABLE)) + ) + ); + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java index 161034ca..db444b72 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShapelessRecipeExtender.java @@ -2,11 +2,18 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.CraftingRecipe; import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.ShapelessRecipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.ShapelessCraftingRecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.util.collection.DefaultedList; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -15,13 +22,17 @@ import java.util.List; @Mixin(ShapelessRecipe.class) -public abstract class ShapelessRecipeExtender implements CraftingRecipe { +public abstract class ShapelessRecipeExtender implements CraftingRecipe, RecipeAccess { + @Shadow + @Final + ItemStack result; + @Shadow @Final List ingredients; @Override - public DefaultedList getRemainder(CraftingRecipeInput input) { + public DefaultedList getRecipeRemainders(CraftingRecipeInput input) { IntSet foundInputs = new IntOpenHashSet(); DefaultedList remainders = DefaultedList.ofSize(input.size(), ItemStack.EMPTY); for (Ingredient ingredient : this.ingredients) { @@ -46,4 +57,15 @@ public DefaultedList getRemainder(CraftingRecipeInput input) { return remainders; } + + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new ShapelessCraftingRecipeDisplay( + this.ingredients.stream().map(Ingredient::toDisplay).toList(), + new SlotDisplay.StackSlotDisplay(this.result), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.CRAFTING_TABLE)) + ) + ); + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmeltingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmeltingRecipeExtender.java index 80f57f93..5e01f843 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmeltingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmeltingRecipeExtender.java @@ -4,14 +4,19 @@ import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.SmeltingRecipe; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.registry.RegistryKey; import org.spongepowered.asm.mixin.Mixin; @Mixin(SmeltingRecipe.class) -public class SmeltingRecipeExtender implements RecipeAccess { +public abstract class SmeltingRecipeExtender extends AbstractCookingRecipeExtender implements RecipeAccess { + public SmeltingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + @Override - public ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.FURNACE)); + protected RegistryKey cookerItemKey() { + return ItemKeys.FURNACE; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingRecipeExtender.java deleted file mode 100644 index 5caf354e..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingRecipeExtender.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.errorcraft.itematic.mixin.recipe; - -import net.errorcraft.itematic.access.recipe.RecipeAccess; -import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.SmithingRecipe; -import net.minecraft.registry.RegistryEntryLookup; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(SmithingRecipe.class) -public interface SmithingRecipeExtender extends RecipeAccess { - @Override - default ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.SMITHING_TABLE)); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java index a87bb625..65faf50e 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java @@ -1,16 +1,25 @@ package net.errorcraft.itematic.mixin.recipe; +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.errorcraft.itematic.item.ItemKeys; +import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.recipe.SmithingTransformRecipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.recipe.display.SmithingRecipeDisplay; +import net.minecraft.registry.RegistryEntryLookup; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.util.List; + @Mixin(SmithingTransformRecipe.class) -public class SmithingTransformRecipeExtender { +public class SmithingTransformRecipeExtender implements RecipeAccess { @Shadow @Final ItemStack result; @@ -25,4 +34,14 @@ public class SmithingTransformRecipeExtender { private ItemStack copyComponentsToNewStackUseRegistryEntry(ItemStack instance, ItemConvertible item, int count) { return instance.itematic$copyComponentsToNewStack(this.result.getRegistryEntry(), count); } + + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new SmithingRecipeDisplay( + new SlotDisplay.StackSlotDisplay(this.result), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.SMITHING_TABLE)) + ) + ); + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java index ba869ddc..70e4ca2a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java @@ -1,28 +1,26 @@ package net.errorcraft.itematic.mixin.recipe; +import net.errorcraft.itematic.access.recipe.RecipeAccess; import net.errorcraft.itematic.item.ItemKeys; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; import net.minecraft.recipe.SmithingTrimRecipe; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.recipe.display.SmithingRecipeDisplay; +import net.minecraft.registry.RegistryEntryLookup; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.List; @Mixin(SmithingTrimRecipe.class) -public class SmithingTrimRecipeExtender { - @Redirect( - method = "getResult", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" - ) - ) - private ItemStack newItemStackForIronChestplateUseRegistryEntry(ItemConvertible item, RegistryWrapper.WrapperLookup lookup) { - return lookup.getOrThrow(RegistryKeys.ITEM) - .getOptional(ItemKeys.IRON_CHESTPLATE) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); +public class SmithingTrimRecipeExtender implements RecipeAccess { + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new SmithingRecipeDisplay( + SlotDisplay.SmithingTrimSlotDisplay.INSTANCE, + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.SMITHING_TABLE)) + ) + ); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmokingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmokingRecipeExtender.java index d67419bc..cd49b574 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmokingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmokingRecipeExtender.java @@ -4,14 +4,19 @@ import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.SmokingRecipe; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.registry.RegistryKey; import org.spongepowered.asm.mixin.Mixin; @Mixin(SmokingRecipe.class) -public class SmokingRecipeExtender implements RecipeAccess { +public abstract class SmokingRecipeExtender extends AbstractCookingRecipeExtender implements RecipeAccess { + public SmokingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + @Override - public ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.SMOKER)); + protected RegistryKey cookerItemKey() { + return ItemKeys.SMOKER; } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java index 79761bd1..4ef71fc6 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java @@ -3,15 +3,28 @@ import net.errorcraft.itematic.access.recipe.RecipeAccess; import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.recipe.StonecuttingRecipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.recipe.display.StonecutterRecipeDisplay; import net.minecraft.registry.RegistryEntryLookup; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.List; @Mixin(StonecuttingRecipe.class) -public class StonecuttingRecipeExtender implements RecipeAccess { +public abstract class StonecuttingRecipeExtender implements RecipeAccess { + @Shadow + public abstract SlotDisplay createResultDisplay(); + @Override - public ItemStack itematic$createIcon(RegistryEntryLookup items) { - return new ItemStack(items.getOrThrow(ItemKeys.STONECUTTER)); + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new StonecutterRecipeDisplay( + this.createResultDisplay(), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.STONECUTTER)) + ) + ); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java index 1a3f2da6..b4c19cfe 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/TransmuteRecipeExtender.java @@ -1,22 +1,45 @@ package net.errorcraft.itematic.mixin.recipe; +import net.errorcraft.itematic.access.recipe.RecipeAccess; +import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.CraftingRecipe; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.TransmuteRecipe; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.ShapelessCraftingRecipeDisplay; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.recipe.input.CraftingRecipeInput; +import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.collection.DefaultedList; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.util.List; + @Mixin(TransmuteRecipe.class) -public class TransmuteRecipeExtender { +public abstract class TransmuteRecipeExtender implements CraftingRecipe, RecipeAccess { + @Shadow + @Final + Ingredient input; + + @Shadow + @Final + Ingredient material; + @Shadow @Final RegistryEntry result; + @Shadow + public abstract List getDisplays(); + @Redirect( method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At( @@ -27,4 +50,44 @@ public class TransmuteRecipeExtender { private ItemStack copyComponentsToNewStackUseRegistryEntry(ItemStack instance, ItemConvertible item, int count) { return instance.itematic$copyComponentsToNewStack(this.result, count); } + + @Override + public DefaultedList getRecipeRemainders(CraftingRecipeInput input) { + DefaultedList remainders = DefaultedList.ofSize(input.size(), ItemStack.EMPTY); + boolean foundInput = false; + for (int i = 0; i < input.size(); i++) { + ItemStack stack = input.getStackInSlot(i); + if (stack.isEmpty()) { + continue; + } + + final int index = i; + if (!foundInput && this.input.test(stack) && !stack.itemMatches(this.result)) { + foundInput = true; + this.input.itematic$remainder() + .map(ItemStack::copy) + .ifPresent(remainder -> remainders.set(index, remainder)); + } else { + this.material.itematic$remainder() + .map(ItemStack::copy) + .ifPresent(remainder -> remainders.set(index, remainder)); + } + } + + return remainders; + } + + @Override + public List itematic$displays(RegistryEntryLookup items) { + return List.of( + new ShapelessCraftingRecipeDisplay( + List.of( + this.input.toDisplay(), + this.material.toDisplay() + ), + new SlotDisplay.ItemSlotDisplay(this.result), + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.CRAFTING_TABLE)) + ) + ); + } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java new file mode 100644 index 00000000..77454772 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java @@ -0,0 +1,93 @@ +package net.errorcraft.itematic.mixin.recipe.display; + +import net.errorcraft.itematic.item.ItemKeys; +import net.errorcraft.itematic.item.component.ItemComponentTypes; +import net.minecraft.item.FuelRegistry; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.resource.featuretoggle.FeatureSet; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Collections; +import java.util.SequencedSet; + +public interface SlotDisplayExtender { + @Mixin(SlotDisplay.StackSlotDisplay.class) + class StackSlotDisplayExtender { + @Redirect( + method = "isEnabled", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/Item;isEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z" + ) + ) + private boolean dataDrivenItemsAreAlwaysEnabled(Item instance, FeatureSet featureSet) { + return true; + } + } + + @Mixin(SlotDisplay.ItemSlotDisplay.class) + class ItemSlotDisplayExtender { + @Redirect( + method = "isEnabled", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/Item;isEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z" + ) + ) + private boolean dataDrivenItemsAreAlwaysEnabled(Item instance, FeatureSet featureSet) { + return true; + } + } + + @Mixin(SlotDisplay.SmithingTrimSlotDisplay.class) + class SmithingTrimSlotDisplayExtender { + @Redirect( + method = "appendStacks", + at = @At( + value = "NEW", + target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" + ) + ) + private ItemStack newItemStackForIronChestplateUseRegistryEntry(ItemConvertible item, SlotDisplay.Context context) { + return context.registries() + .getOrThrow(RegistryKeys.ITEM) + .getOptional(ItemKeys.IRON_CHESTPLATE) + .map(ItemStack::new) + .orElse(ItemStack.EMPTY); + } + } + + @Mixin(SlotDisplay.AnyFuelSlotDisplay.class) + class AnyFuelSlotDisplayExtender { + @Inject( + method = "appendStacks", + at = @At("HEAD") + ) + private void addDataDrivenFuel(SlotDisplay.Context context, SlotDisplay.StackConsumer consumer, CallbackInfo info) { + context.registries() + .getOrThrow(RegistryKeys.ITEM) + .streamEntries() + .filter(reference -> reference.value().itematic$hasBehavior(ItemComponentTypes.FUEL)) + .forEach(consumer::append); + } + + @Redirect( + method = "appendStacks", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/FuelRegistry;getFuelItems()Ljava/util/SequencedSet;" + ) + ) + private SequencedSet doNotAddExistingFuelItems(FuelRegistry instance) { + return Collections.emptyNavigableSet(); + } + } +} diff --git a/src/main/java/net/errorcraft/itematic/predicate/NumberRangeUtil.java b/src/main/java/net/errorcraft/itematic/predicate/NumberRangeUtil.java new file mode 100644 index 00000000..3bda3a08 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/predicate/NumberRangeUtil.java @@ -0,0 +1,36 @@ +package net.errorcraft.itematic.predicate; + +import com.mojang.serialization.Codec; +import io.netty.buffer.ByteBuf; +import net.errorcraft.itematic.mixin.predicate.NumberRangeAccessor; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.predicate.NumberRange; + +import java.util.Optional; + +public class NumberRangeUtil { + public static final PacketCodec INTEGER_RANGE_PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.optional(PacketCodecs.VAR_INT), NumberRange.IntRange::min, + PacketCodecs.optional(PacketCodecs.VAR_INT), NumberRange.IntRange::max, + NumberRangeAccessor.IntRangeAccessor::create + ); + + private NumberRangeUtil() {} + + public record FloatRange(Optional min, Optional max) implements NumberRange { + public static final Codec CODEC = NumberRange.createCodec(Codec.FLOAT, FloatRange::new); + + public static FloatRange exactly(float value) { + return new FloatRange(Optional.of(value), Optional.of(value)); + } + + public boolean test(float value) { + if (this.min.isPresent() && this.min.get() > value) { + return false; + } + + return this.max.isEmpty() || value <= this.max.get(); + } + } +} diff --git a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateUtil.java b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateUtil.java index c21293ca..af08407e 100644 --- a/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateUtil.java +++ b/src/main/java/net/errorcraft/itematic/predicate/item/ItemPredicateUtil.java @@ -1,8 +1,7 @@ package net.errorcraft.itematic.predicate.item; -import io.netty.buffer.ByteBuf; import net.errorcraft.itematic.access.predicate.item.ItemPredicateAccess; -import net.errorcraft.itematic.mixin.predicate.NumberRangeAccessor; +import net.errorcraft.itematic.predicate.NumberRangeUtil; import net.minecraft.item.Item; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; @@ -18,25 +17,20 @@ import java.util.Optional; public class ItemPredicateUtil { - private static final PacketCodec INTEGER_RANGE_PACKET_CODEC = PacketCodec.tuple( - PacketCodecs.optional(PacketCodecs.VAR_INT), NumberRange.IntRange::min, - PacketCodecs.optional(PacketCodecs.VAR_INT), NumberRange.IntRange::max, - NumberRangeAccessor.IntRangeAccessor::create - ); public static final PacketCodec PACKET_CODEC = PacketCodec.tuple( PacketCodecs.optional(PacketCodecs.registryEntryList(RegistryKeys.ITEM)), ItemPredicate::items, - INTEGER_RANGE_PACKET_CODEC, ItemPredicate::count, + NumberRangeUtil.INTEGER_RANGE_PACKET_CODEC, ItemPredicate::count, ComponentPredicate.PACKET_CODEC, ItemPredicate::components, PacketCodecs.registryCodec(ItemSubPredicate.PREDICATES_MAP_CODEC), ItemPredicate::subPredicates, ItemPredicateExtraFields.PACKET_CODEC, itemPredicate -> ((ItemPredicateAccess)(Object) itemPredicate).itematic$extraFields(), ItemPredicateUtil::create ); + private ItemPredicateUtil() {} + private static ItemPredicate create(Optional> items, NumberRange.IntRange count, ComponentPredicate components, Map, ItemSubPredicate> subPredicates, ItemPredicateExtraFields extraFields) { ItemPredicate predicate = new ItemPredicate(items, count, components, subPredicates); ((ItemPredicateAccess)(Object) predicate).itematic$setExtraFields(extraFields); return predicate; } - - private ItemPredicateUtil() {} } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 218589af..5e593c32 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -36,12 +36,6 @@ "accessWidener": "itematic.classtweaker", "custom": { "loom:injected_interfaces": { - "net/minecraft/class_314": [ - "net/errorcraft/itematic/access/client/recipebook/RecipeBookGroupAccess" - ], - "net/minecraft/class_507": [ - "net/errorcraft/itematic/access/client/gui/screen/recipebook/RecipeBookWidgetAccess" - ], "net/minecraft/class_1297": [ "net/errorcraft/itematic/access/entity/EntityAccess" ], diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index 7c97cff2..cef2a3c8 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -109,10 +109,10 @@ "entity.ai.brain.task.CrossbowAttackTaskExtender", "entity.ai.brain.task.FarmerWorkTaskExtender", "entity.ai.brain.task.GatherItemsVillagerTaskExtender", - "entity.ai.brain.task.LookTargetUtilExtender", "entity.ai.brain.task.MeleeAttackTaskExtender", "entity.ai.brain.task.RamImpactTaskExtender", "entity.ai.brain.task.RemoveOffHandItemTaskExtender", + "entity.ai.brain.task.TargetUtilExtender", "entity.ai.goal.BowAttackGoalExtender", "entity.ai.goal.CrossbowAttackGoalExtender", "entity.ai.goal.SkeletonHorseTrapTriggerGoalExtender", @@ -308,6 +308,7 @@ "predicate.entity.PlayerPredicateExtender$StatMatcherExtender", "predicate.item.ItemPredicateExtender", "predicate.item.ItemPredicateExtender$BuilderExtender", + "recipe.AbstractCookingRecipeExtender", "recipe.ArmorDyeRecipeExtender", "recipe.BannerDuplicateRecipeExtender", "recipe.BlastingRecipeExtender", @@ -325,17 +326,21 @@ "recipe.RawShapedRecipeExtender", "recipe.RecipeExtender", "recipe.RepairItemRecipeExtender", + "recipe.ServerRecipeManagerExtender", "recipe.ShapedRecipeExtender", "recipe.ShapelessRecipeExtender", "recipe.ShieldDecorationRecipeExtender", "recipe.SmeltingRecipeExtender", - "recipe.SmithingRecipeExtender", "recipe.SmithingTransformRecipeExtender", "recipe.SmithingTrimRecipeExtender", "recipe.SmokingRecipeExtender", "recipe.StonecuttingRecipeExtender", "recipe.TippedArrowRecipeExtender", "recipe.TransmuteRecipeExtender", + "recipe.display.SlotDisplayExtender$AnyFuelSlotDisplayExtender", + "recipe.display.SlotDisplayExtender$ItemSlotDisplayExtender", + "recipe.display.SlotDisplayExtender$SmithingTrimSlotDisplayExtender", + "recipe.display.SlotDisplayExtender$StackSlotDisplayExtender", "registry.BuiltinRegistriesExtender", "registry.RegistriesAccessor", "registry.RegistriesExtender", From 4211b87d06c6dd3bc79607a7a2d4b22167989668 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Sun, 8 Feb 2026 20:54:26 +0100 Subject: [PATCH 09/11] Port to 1.21.2 pre-release 1 --- gradle.properties | 6 +- .../FirstToPassConditionColorProvider.java | 6 +- .../mixin/client/gui/DrawContextExtender.java | 13 +++++ .../client/gui/hud/InGameHudExtender.java | 18 ++++-- .../screen/ingame/SmithingScreenExtender.java | 19 +++++++ .../recipebook/RecipeBookWidgetExtender.java | 14 ++--- .../minecraft/item_bar_style/bundle.json | 2 +- .../data/minecraft/item/black_bundle.json | 2 +- .../data/minecraft/item/blue_bundle.json | 2 +- .../data/minecraft/item/brown_bundle.json | 2 +- .../generated/data/minecraft/item/bundle.json | 2 +- .../data/minecraft/item/carved_pumpkin.json | 4 +- .../data/minecraft/item/creeper_head.json | 3 +- .../data/minecraft/item/cyan_bundle.json | 2 +- .../data/minecraft/item/dragon_head.json | 3 +- .../data/minecraft/item/gray_bundle.json | 2 +- .../data/minecraft/item/green_bundle.json | 2 +- .../minecraft/item/light_blue_bundle.json | 2 +- .../minecraft/item/light_gray_bundle.json | 2 +- .../data/minecraft/item/lime_bundle.json | 2 +- .../data/minecraft/item/magenta_bundle.json | 2 +- .../data/minecraft/item/orange_bundle.json | 2 +- .../data/minecraft/item/piglin_head.json | 3 +- .../data/minecraft/item/pink_bundle.json | 2 +- .../data/minecraft/item/player_head.json | 3 +- .../data/minecraft/item/purple_bundle.json | 2 +- .../data/minecraft/item/red_bundle.json | 2 +- .../data/minecraft/item/skeleton_skull.json | 3 +- .../data/minecraft/item/white_bundle.json | 2 +- .../minecraft/item/wither_skeleton_skull.json | 3 +- .../data/minecraft/item/yellow_bundle.json | 2 +- .../data/minecraft/item/zombie_head.json | 3 +- .../net/errorcraft/itematic/Itematic.java | 8 +-- .../errorcraft/itematic/item/ItemUtil.java | 5 +- .../components/EquipmentItemComponent.java | 8 +-- .../ItematicLootContextParameters.java | 13 ----- .../loot/predicate/SideCheckPredicate.java | 4 +- .../mixin/entity/LivingEntityExtender.java | 2 +- .../passive/MerchantEntityExtender.java | 9 +-- .../mixin/item/BundleItemAccessor.java | 2 +- .../LootContextParametersAccessor.java | 14 ----- .../context/LootContextTypesAccessor.java | 4 +- .../recipe/AbstractCookingRecipeExtender.java | 14 ++++- .../mixin/recipe/ArmorDyeRecipeExtender.java | 30 ++++++---- .../recipe/BannerDuplicateRecipeExtender.java | 2 +- .../CraftingDecoratedPotRecipeExtender.java | 11 ---- .../recipe/FireworkStarRecipeExtender.java | 15 +++-- .../ShieldDecorationRecipeExtender.java | 22 ++++++-- .../SmithingTransformRecipeExtender.java | 17 ++++++ .../recipe/SmithingTrimRecipeExtender.java | 24 +++++++- .../recipe/StonecuttingRecipeExtender.java | 10 +++- .../recipe/display/SlotDisplayExtender.java | 56 +++++++++---------- .../context/ItematicContextParameters.java | 12 ++++ .../context/ItematicContextTypes.java} | 14 ++--- .../world/action/context/ActionContext.java | 12 ++-- src/main/resources/itematic.mixins.json | 2 - 56 files changed, 270 insertions(+), 177 deletions(-) delete mode 100644 src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextParameters.java delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextParametersAccessor.java create mode 100644 src/main/java/net/errorcraft/itematic/util/context/ItematicContextParameters.java rename src/main/java/net/errorcraft/itematic/{loot/context/ItematicLootContextTypes.java => util/context/ItematicContextTypes.java} (50%) diff --git a/gradle.properties b/gradle.properties index 3a2b7427..ec830058 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=24w40a - yarn_mappings=24w40a+build.11 + minecraft_version=1.21.2-pre1 + yarn_mappings=1.21.2-pre1+build.3 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.105.2+1.21.2 + fabric_version=0.105.3+1.21.2 diff --git a/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java b/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java index 12ea5feb..1f26a659 100644 --- a/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java +++ b/src/client/java/net/errorcraft/itematic/client/item/bar/color/provider/FirstToPassConditionColorProvider.java @@ -48,13 +48,13 @@ public static Entry of(int color, float progress) { } } - public record Condition(NumberRangeUtil.FloatRange range) { + public record Condition(NumberRangeUtil.FloatRange progress) { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - NumberRangeUtil.FloatRange.CODEC.fieldOf("range").forGetter(Condition::range) + NumberRangeUtil.FloatRange.CODEC.fieldOf("progress").forGetter(Condition::progress) ).apply(instance, Condition::new)); public boolean test(float progress) { - return this.range.test(progress); + return this.progress.test(progress); } } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java index 13ffbb85..ba041388 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/DrawContextExtender.java @@ -10,7 +10,9 @@ import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.registry.tag.TagKey; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -44,6 +46,17 @@ private void setItemBarStyles(MinecraftClient client, MatrixStack matrices, Vert this.itemBarStyles = ((MinecraftClientAccess) client).itematic$itemBarStyles(); } + @Redirect( + method = "drawItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;IIII)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" + ) + ) + private boolean isInForBundlesReturnFalse(ItemStack instance, TagKey tag) { + return false; + } + @ModifyExpressionValue( method = "drawItemBar", at = @At( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java index 7f4c8f79..2a565bcd 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/hud/InGameHudExtender.java @@ -1,23 +1,29 @@ package net.errorcraft.itematic.mixin.client.gui.hud; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.component.ComponentType; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(InGameHud.class) public class InGameHudExtender { - @ModifyExpressionValue( + @WrapOperation( method = "renderMiscOverlays", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isIn(Lnet/minecraft/registry/tag/TagKey;)Z" + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" ) ) - private boolean checkPresenceEquipmentBehavior(boolean original, @Local ItemStack stack) { - return original && stack.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT); + private Object checkPresenceEquipmentBehavior(ItemStack instance, ComponentType type, Operation original) { + if (!instance.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + return null; + } + + return original.call(instance, type); } } diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java index 9fc768af..2c5d00de 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/gui/screen/ingame/SmithingScreenExtender.java @@ -1,5 +1,7 @@ package net.errorcraft.itematic.mixin.client.gui.screen.ingame; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalRef; @@ -8,6 +10,8 @@ import net.errorcraft.itematic.item.smithing.template.SmithingTemplate; import net.minecraft.client.gui.screen.ingame.ForgingScreen; import net.minecraft.client.gui.screen.ingame.SmithingScreen; +import net.minecraft.component.ComponentType; +import net.minecraft.component.type.EquippableComponent; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -70,6 +74,21 @@ private Optional> getEmptyAdditionsSlotTexturesFromSmithingTemp return smithingTemplate.get().map(SmithingTemplate::emptyAdditionsSlotTextures); } + @WrapOperation( + method = "equipArmorStand", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;" + ) + ) + private Object checkPresenceEquipmentBehavior(ItemStack instance, ComponentType type, Operation original) { + if (!instance.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + return null; + } + + return original.call(instance, type); + } + @ModifyConstant( method = "renderSlotTooltip", constant = @Constant( diff --git a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java index b5fb98b7..e7dfa6a1 100644 --- a/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java +++ b/src/client/java/net/errorcraft/itematic/mixin/client/recipebook/RecipeBookWidgetExtender.java @@ -8,7 +8,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.book.RecipeBookGroup; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKey; import org.spongepowered.asm.mixin.Mixin; @@ -31,8 +31,8 @@ public static class TabExtender implements RecipeBookWidgetTabAccess { @Redirect( method = { "(Lnet/minecraft/client/recipebook/RecipeBookType;)V", - "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", - "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V" + "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookCategory;)V", + "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookCategory;)V" }, at = @At( value = "NEW", @@ -53,19 +53,19 @@ private void setIcons(RecipeBookType type, CallbackInfo info) { } @Inject( - method = "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", + method = "(Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookCategory;)V", at = @At("TAIL") ) - private void setIcons(Item primaryIcon, RecipeBookGroup group, CallbackInfo info) { + private void setIcons(Item primaryIcon, RecipeBookCategory category, CallbackInfo info) { this.primaryIconItem = Registries.ITEM.getKey(primaryIcon).orElseThrow(); this.secondaryIconItem = Optional.empty(); } @Inject( - method = "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookGroup;)V", + method = "(Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/recipe/book/RecipeBookCategory;)V", at = @At("TAIL") ) - private void setIcons(Item primaryIcon, Item secondaryIcon, RecipeBookGroup group, CallbackInfo info) { + private void setIcons(Item primaryIcon, Item secondaryIcon, RecipeBookCategory category, CallbackInfo info) { this.primaryIconItem = Registries.ITEM.getKey(primaryIcon).orElseThrow(); this.secondaryIconItem = Optional.of(Registries.ITEM.getKey(secondaryIcon).orElseThrow()); } diff --git a/src/main/generated/assets/minecraft/item_bar_style/bundle.json b/src/main/generated/assets/minecraft/item_bar_style/bundle.json index 98352823..8fa3a6a7 100644 --- a/src/main/generated/assets/minecraft/item_bar_style/bundle.json +++ b/src/main/generated/assets/minecraft/item_bar_style/bundle.json @@ -8,7 +8,7 @@ "color": -43948 }, "condition": { - "range": 1.0 + "progress": 1.0 } } ], diff --git a/src/main/generated/data/minecraft/item/black_bundle.json b/src/main/generated/data/minecraft/item/black_bundle.json index 639fb892..57a27a8c 100644 --- a/src/main/generated/data/minecraft/item/black_bundle.json +++ b/src/main/generated/data/minecraft/item/black_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/blue_bundle.json b/src/main/generated/data/minecraft/item/blue_bundle.json index d1044b57..5f56b34c 100644 --- a/src/main/generated/data/minecraft/item/blue_bundle.json +++ b/src/main/generated/data/minecraft/item/blue_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/brown_bundle.json b/src/main/generated/data/minecraft/item/brown_bundle.json index c53fbc9b..7d4913f0 100644 --- a/src/main/generated/data/minecraft/item/brown_bundle.json +++ b/src/main/generated/data/minecraft/item/brown_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/bundle.json b/src/main/generated/data/minecraft/item/bundle.json index 99a6b401..e79fe363 100644 --- a/src/main/generated/data/minecraft/item/bundle.json +++ b/src/main/generated/data/minecraft/item/bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/carved_pumpkin.json b/src/main/generated/data/minecraft/item/carved_pumpkin.json index b55dd08f..2a41c112 100644 --- a/src/main/generated/data/minecraft/item/carved_pumpkin.json +++ b/src/main/generated/data/minecraft/item/carved_pumpkin.json @@ -10,7 +10,9 @@ "behavior": "minecraft:place_carved_pumpkin" }, "minecraft:equipment": { - "slot": "head" + "camera_overlay": "minecraft:misc/pumpkinblur", + "slot": "head", + "swappable": false }, "minecraft:stackable": 64 }, diff --git a/src/main/generated/data/minecraft/item/creeper_head.json b/src/main/generated/data/minecraft/item/creeper_head.json index 73c24c0b..53c5b50e 100644 --- a/src/main/generated/data/minecraft/item/creeper_head.json +++ b/src/main/generated/data/minecraft/item/creeper_head.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/cyan_bundle.json b/src/main/generated/data/minecraft/item/cyan_bundle.json index 6c6ce372..a87f887b 100644 --- a/src/main/generated/data/minecraft/item/cyan_bundle.json +++ b/src/main/generated/data/minecraft/item/cyan_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/dragon_head.json b/src/main/generated/data/minecraft/item/dragon_head.json index 3d98cd68..9a019542 100644 --- a/src/main/generated/data/minecraft/item/dragon_head.json +++ b/src/main/generated/data/minecraft/item/dragon_head.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/gray_bundle.json b/src/main/generated/data/minecraft/item/gray_bundle.json index ad02750b..e95eb2f9 100644 --- a/src/main/generated/data/minecraft/item/gray_bundle.json +++ b/src/main/generated/data/minecraft/item/gray_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/green_bundle.json b/src/main/generated/data/minecraft/item/green_bundle.json index 3c2beb52..dcaeee03 100644 --- a/src/main/generated/data/minecraft/item/green_bundle.json +++ b/src/main/generated/data/minecraft/item/green_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/light_blue_bundle.json b/src/main/generated/data/minecraft/item/light_blue_bundle.json index fb90b704..29f16c67 100644 --- a/src/main/generated/data/minecraft/item/light_blue_bundle.json +++ b/src/main/generated/data/minecraft/item/light_blue_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/light_gray_bundle.json b/src/main/generated/data/minecraft/item/light_gray_bundle.json index c7b15c6c..78742dbc 100644 --- a/src/main/generated/data/minecraft/item/light_gray_bundle.json +++ b/src/main/generated/data/minecraft/item/light_gray_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/lime_bundle.json b/src/main/generated/data/minecraft/item/lime_bundle.json index 8e6b01aa..57b8ff76 100644 --- a/src/main/generated/data/minecraft/item/lime_bundle.json +++ b/src/main/generated/data/minecraft/item/lime_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/magenta_bundle.json b/src/main/generated/data/minecraft/item/magenta_bundle.json index 58251a85..bc777f09 100644 --- a/src/main/generated/data/minecraft/item/magenta_bundle.json +++ b/src/main/generated/data/minecraft/item/magenta_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/orange_bundle.json b/src/main/generated/data/minecraft/item/orange_bundle.json index 07e4bc24..17d9b10f 100644 --- a/src/main/generated/data/minecraft/item/orange_bundle.json +++ b/src/main/generated/data/minecraft/item/orange_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/piglin_head.json b/src/main/generated/data/minecraft/item/piglin_head.json index 78c8725f..8d4363fa 100644 --- a/src/main/generated/data/minecraft/item/piglin_head.json +++ b/src/main/generated/data/minecraft/item/piglin_head.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/pink_bundle.json b/src/main/generated/data/minecraft/item/pink_bundle.json index 42b497ad..863c08dd 100644 --- a/src/main/generated/data/minecraft/item/pink_bundle.json +++ b/src/main/generated/data/minecraft/item/pink_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/player_head.json b/src/main/generated/data/minecraft/item/player_head.json index 39e354ff..6e2d777c 100644 --- a/src/main/generated/data/minecraft/item/player_head.json +++ b/src/main/generated/data/minecraft/item/player_head.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/purple_bundle.json b/src/main/generated/data/minecraft/item/purple_bundle.json index 18ea0b71..5e99c853 100644 --- a/src/main/generated/data/minecraft/item/purple_bundle.json +++ b/src/main/generated/data/minecraft/item/purple_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/red_bundle.json b/src/main/generated/data/minecraft/item/red_bundle.json index cd13dd49..add23c6f 100644 --- a/src/main/generated/data/minecraft/item/red_bundle.json +++ b/src/main/generated/data/minecraft/item/red_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/skeleton_skull.json b/src/main/generated/data/minecraft/item/skeleton_skull.json index 6e656c9b..526dfcb8 100644 --- a/src/main/generated/data/minecraft/item/skeleton_skull.json +++ b/src/main/generated/data/minecraft/item/skeleton_skull.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/white_bundle.json b/src/main/generated/data/minecraft/item/white_bundle.json index 61b2cd28..e3118ad2 100644 --- a/src/main/generated/data/minecraft/item/white_bundle.json +++ b/src/main/generated/data/minecraft/item/white_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/wither_skeleton_skull.json b/src/main/generated/data/minecraft/item/wither_skeleton_skull.json index 75d1a6cd..099f47ef 100644 --- a/src/main/generated/data/minecraft/item/wither_skeleton_skull.json +++ b/src/main/generated/data/minecraft/item/wither_skeleton_skull.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/generated/data/minecraft/item/yellow_bundle.json b/src/main/generated/data/minecraft/item/yellow_bundle.json index 4155ed6d..2146e9cb 100644 --- a/src/main/generated/data/minecraft/item/yellow_bundle.json +++ b/src/main/generated/data/minecraft/item/yellow_bundle.json @@ -45,7 +45,7 @@ "minecraft:useable": { "ticks": { "type": "minecraft:constant", - "amount": 60 + "amount": 200 } } }, diff --git a/src/main/generated/data/minecraft/item/zombie_head.json b/src/main/generated/data/minecraft/item/zombie_head.json index 26d32e78..534ca7bd 100644 --- a/src/main/generated/data/minecraft/item/zombie_head.json +++ b/src/main/generated/data/minecraft/item/zombie_head.json @@ -12,7 +12,8 @@ "behavior": "minecraft:equip_entity_head" }, "minecraft:equipment": { - "slot": "head" + "slot": "head", + "swappable": false }, "minecraft:firework_shape_modifier": "creeper", "minecraft:stackable": 64 diff --git a/src/main/java/net/errorcraft/itematic/Itematic.java b/src/main/java/net/errorcraft/itematic/Itematic.java index 0fddd7dc..10e1aebf 100644 --- a/src/main/java/net/errorcraft/itematic/Itematic.java +++ b/src/main/java/net/errorcraft/itematic/Itematic.java @@ -11,10 +11,10 @@ import net.errorcraft.itematic.item.shooter.method.ShooterMethodTypes; import net.errorcraft.itematic.item.smithing.template.SmithingTemplateTypes; import net.errorcraft.itematic.item.use.provider.IntegerProviderTypes; -import net.errorcraft.itematic.loot.context.ItematicLootContextParameters; -import net.errorcraft.itematic.loot.context.ItematicLootContextTypes; import net.errorcraft.itematic.loot.function.ItematicItemModifierTypes; import net.errorcraft.itematic.loot.predicate.ItematicPredicateTypes; +import net.errorcraft.itematic.util.context.ItematicContextParameters; +import net.errorcraft.itematic.util.context.ItematicContextTypes; import net.errorcraft.itematic.village.trade.modifier.TradeModifierTypes; import net.errorcraft.itematic.world.action.ActionTypes; import net.errorcraft.itematic.world.action.sequence.handler.SequenceHandlerTypes; @@ -27,12 +27,12 @@ public void onInitialize() { ItemColorTypes.init(); ItemEvents.init(); ActionTypes.init(); - ItematicLootContextTypes.init(); + ItematicContextTypes.init(); ModelOverrides.init(); Pointers.init(); SequenceHandlerTypes.init(); ItematicPredicateTypes.init(); - ItematicLootContextParameters.init(); + ItematicContextParameters.init(); SmithingTemplateTypes.init(); BlockPickerTypes.init(); ItematicItemModifierTypes.init(); diff --git a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java index 484b30b6..f96c9bf3 100644 --- a/src/main/java/net/errorcraft/itematic/item/ItemUtil.java +++ b/src/main/java/net/errorcraft/itematic/item/ItemUtil.java @@ -6756,7 +6756,10 @@ private void bootstrapCompostables() { .with(StackableItemComponent.of(64)) .with(BlockItemComponent.of(this.blocks.getOrThrow(BlockKeys.CARVED_PUMPKIN))) .with(CompostableItemComponent.of(ComposterBlockUtil.BIG_CHANCE_TO_COMPOST)) - .with(EquipmentItemComponent.ofStatic(EquipmentSlot.HEAD)) + .with(EquipmentItemComponent.of(EquippableComponent.builder(EquipmentSlot.HEAD) + .swappable(false) + .cameraOverlay(Identifier.ofVanilla("misc/pumpkinblur")) + .build())) .with(DispensableItemComponent.of(this.dispenseBehaviors.getOrThrow(DispenseBehaviors.PLACE_CARVED_PUMPKIN))) .build() )); diff --git a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java index 57846fa9..8febb0b9 100644 --- a/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java +++ b/src/main/java/net/errorcraft/itematic/item/component/components/EquipmentItemComponent.java @@ -71,14 +71,12 @@ public static EquipmentItemComponent of(EquippableComponent equippable) { return new EquipmentItemComponent(equippable); } - public static EquipmentItemComponent ofStatic(EquipmentSlot slot) { - return new EquipmentItemComponent(EquippableComponent.builder(slot).build()); - } - public static ItemComponent[] skull(RegistryEntry attachedBlock, RegistryEntry otherBlock, RegistryEntryLookup dispenseBehaviors) { return new ItemComponent[] { BlockItemComponent.attachedToSide(attachedBlock, otherBlock, Direction.DOWN), - ofStatic(EquipmentSlot.HEAD), + new EquipmentItemComponent(EquippableComponent.builder(EquipmentSlot.HEAD) + .swappable(false) + .build()), DispensableItemComponent.of(dispenseBehaviors.getOrThrow(DispenseBehaviors.EQUIP_ENTITY_HEAD)), FireworkShapeModifierItemComponent.of(FireworkExplosionComponent.Type.CREEPER) }; diff --git a/src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextParameters.java b/src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextParameters.java deleted file mode 100644 index bc1f3f7c..00000000 --- a/src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextParameters.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.errorcraft.itematic.loot.context; - -import net.errorcraft.itematic.mixin.loot.context.LootContextParametersAccessor; -import net.minecraft.loot.context.LootContextParameter; -import net.minecraft.util.math.Direction; - -public class ItematicLootContextParameters { - public static final LootContextParameter SIDE = LootContextParametersAccessor.register("side"); - - private ItematicLootContextParameters() {} - - public static void init() {} -} diff --git a/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java b/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java index 7bcd7432..3ffc62a6 100644 --- a/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java +++ b/src/main/java/net/errorcraft/itematic/loot/predicate/SideCheckPredicate.java @@ -2,8 +2,8 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.errorcraft.itematic.loot.context.ItematicLootContextParameters; import net.errorcraft.itematic.serialization.SetCodec; +import net.errorcraft.itematic.util.context.ItematicContextParameters; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.condition.LootConditionType; import net.minecraft.loot.context.LootContext; @@ -23,7 +23,7 @@ public LootConditionType getType() { @Override public boolean test(LootContext context) { - return this.sides.contains(context.get(ItematicLootContextParameters.SIDE)); + return this.sides.contains(context.get(ItematicContextParameters.SIDE)); } public static LootCondition.Builder builder(Direction... sides) { diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java index 21c81a69..05f73d51 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/LivingEntityExtender.java @@ -390,7 +390,7 @@ private boolean dispensableAlwaysTrue(EquippableComponent instance) { ) ) private Object checkPresenceEquipmentBehavior(ItemStack instance, ComponentType type, Operation original) { - if (instance.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { + if (!instance.itematic$hasBehavior(ItemComponentTypes.EQUIPMENT)) { return null; } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MerchantEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MerchantEntityExtender.java index c2b4d640..c26b8720 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MerchantEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/passive/MerchantEntityExtender.java @@ -2,15 +2,15 @@ import com.google.common.collect.Lists; import com.mojang.serialization.DynamicOps; -import net.errorcraft.itematic.loot.context.ItematicLootContextTypes; import net.errorcraft.itematic.mixin.entity.mob.MobEntityExtender; +import net.errorcraft.itematic.util.context.ItematicContextTypes; import net.errorcraft.itematic.village.trade.Trade; import net.minecraft.entity.EntityType; import net.minecraft.entity.passive.MerchantEntity; import net.minecraft.entity.passive.PassiveEntity; import net.minecraft.loot.context.LootContext; -import net.minecraft.loot.context.LootContextParameterSet; import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.loot.context.LootWorldContext; import net.minecraft.nbt.NbtElement; import net.minecraft.registry.RegistryOps; import net.minecraft.registry.entry.RegistryEntry; @@ -69,10 +69,11 @@ protected void fillRecipesFromContext() { if (!(this.getWorld() instanceof ServerWorld world)) { return; } - LootContextParameterSet set = new LootContextParameterSet.Builder(world) + + LootWorldContext set = new LootWorldContext.Builder(world) .add(LootContextParameters.THIS_ENTITY, this) .add(LootContextParameters.ORIGIN, this.getPos()) - .build(ItematicLootContextTypes.TRADE); + .build(ItematicContextTypes.TRADE); LootContext context = new LootContext.Builder(set).build(Optional.empty()); this.fillRecipes(context); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java index 0c0ab128..904e236a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/BundleItemAccessor.java @@ -26,7 +26,7 @@ static int ticksBetweenThrows() { throw new AssertionError(); } - @Accessor("field_54111") + @Accessor("MAX_USE_TIME") static int useDuration() { throw new AssertionError(); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextParametersAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextParametersAccessor.java deleted file mode 100644 index 429ce242..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextParametersAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.errorcraft.itematic.mixin.loot.context; - -import net.minecraft.loot.context.LootContextParameter; -import net.minecraft.loot.context.LootContextParameters; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(LootContextParameters.class) -public interface LootContextParametersAccessor { - @Invoker("register") - static LootContextParameter register(String name) { - throw new AssertionError(); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextTypesAccessor.java b/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextTypesAccessor.java index f8db31d1..aada098f 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextTypesAccessor.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/context/LootContextTypesAccessor.java @@ -1,7 +1,7 @@ package net.errorcraft.itematic.mixin.loot.context; -import net.minecraft.loot.context.LootContextType; import net.minecraft.loot.context.LootContextTypes; +import net.minecraft.util.context.ContextType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @@ -10,7 +10,7 @@ @Mixin(LootContextTypes.class) public interface LootContextTypesAccessor { @Invoker("register") - static LootContextType register(String name, Consumer type) { + static ContextType register(String name, Consumer type) { throw new AssertionError(); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java index 08c02b35..05be4555 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/AbstractCookingRecipeExtender.java @@ -12,13 +12,23 @@ import net.minecraft.recipe.display.SlotDisplay; import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKey; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import java.util.List; @Mixin(AbstractCookingRecipe.class) public abstract class AbstractCookingRecipeExtender extends SingleStackRecipe implements RecipeAccess { + @Shadow + @Final + private float experience; + + @Shadow + @Final + private int cookingTime; + public AbstractCookingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { super(group, ingredient, result); } @@ -30,7 +40,9 @@ public AbstractCookingRecipeExtender(String group, Ingredient ingredient, ItemSt this.ingredient().toDisplay(), SlotDisplay.AnyFuelSlotDisplay.INSTANCE, new SlotDisplay.StackSlotDisplay(this.result()), - new SlotDisplay.ItemSlotDisplay(items.getOrThrow(this.cookerItemKey())) + new SlotDisplay.ItemSlotDisplay(items.getOrThrow(this.cookerItemKey())), + this.cookingTime, + this.experience ) ); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java index 40458b05..31ca9505 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ArmorDyeRecipeExtender.java @@ -32,19 +32,29 @@ private boolean isInForDyeableUseItemComponentCheck(ItemStack instance, TagKey clazz, @Local ItemStack inputStack, @Share("dye") LocalRef dye) { + Optional optionalDye = inputStack.itematic$getBehavior(ItemComponentTypes.DYE); + optionalDye.ifPresent(dye::set); + return optionalDye.isPresent(); + } + + @ModifyConstant( + method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", constant = @Constant( classValue = DyeItem.class, ordinal = 0 ) ) - private boolean instanceOfDyeItemUseItemComponent(Object reference, Class clazz, @Local(ordinal = 1) ItemStack inputStack, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - Optional optionalComponent = inputStack.itematic$getBehavior(ItemComponentTypes.DYE); - optionalComponent.ifPresent(dyeItemComponent::set); - return optionalComponent.isPresent(); + private boolean instanceOfDyeItemUseItemComponentForCraft(Object reference, Class clazz, @Local(ordinal = 1) ItemStack inputStack, @Share("dye") LocalRef dye) { + Optional optionalDye = inputStack.itematic$getBehavior(ItemComponentTypes.DYE); + optionalDye.ifPresent(dye::set); + return optionalDye.isPresent(); } @ModifyVariable( @@ -65,7 +75,7 @@ private Item castToDyeItemUseNull(Item instance) { ) ) @SuppressWarnings("unchecked") - private E addDyeItemUseItemComponent(E e, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - return (E) DyeItem.byColor(dyeItemComponent.get().color()); + private E addDyeItemUseItemComponent(E e, @Share("dye") LocalRef dye) { + return (E) DyeItem.byColor(dye.get().color()); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java index 77422794..675671ba 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/BannerDuplicateRecipeExtender.java @@ -24,7 +24,7 @@ public class BannerDuplicateRecipeExtender { ordinal = 0 ) ) - private boolean instanceOfBannerItemUseItemComponentCheck(Object reference, Class clazz, @Local(ordinal = 2) ItemStack inputStack, @Share("dyeColor") LocalRef dyeColor) { + private boolean instanceOfBannerItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack inputStack, @Share("dyeColor") LocalRef dyeColor) { Optional optionalDyeColor = inputStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .flatMap(BannerPatternHolderItemComponent::color); optionalDyeColor.ifPresent(dyeColor::set); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java index d2bd1567..f70863f7 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/CraftingDecoratedPotRecipeExtender.java @@ -32,17 +32,6 @@ private boolean isInForDecoratedPotIngredientsUseItemComponentCheck(ItemStack in return !instance.isEmpty() && instance.itematic$hasBehavior(ItemComponentTypes.DECORATED_POT_PATTERN); } - @Redirect( - method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z" - ) - ) - private boolean isOfForAirUseIsEmptyCheck(ItemStack instance, Item item) { - return instance.isEmpty(); - } - /** * @author ErrorCraft * @reason Uses a registry entry for data-driven items. diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java index 1c411928..40e90eab 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/FireworkStarRecipeExtender.java @@ -131,18 +131,17 @@ private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack ingredient, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - Optional optionalComponent = ingredient.itematic$getBehavior(ItemComponentTypes.DYE); - optionalComponent.ifPresent(dyeItemComponent::set); - return optionalComponent.isPresent(); + private boolean instanceOfDyeItemUseItemComponentCheck(Object reference, Class clazz, @Local ItemStack ingredient, @Share("dye") LocalRef dye) { + Optional optionalDye = ingredient.itematic$getBehavior(ItemComponentTypes.DYE); + optionalDye.ifPresent(dye::set); + return optionalDye.isPresent(); } @Redirect( method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;", - ordinal = 1 + target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;" ), slice = @Slice( from = @At( @@ -163,8 +162,8 @@ private Item castToDyeItemUseNull(ItemStack instance) { target = "Lnet/minecraft/item/DyeItem;getColor()Lnet/minecraft/util/DyeColor;" ) ) - private DyeColor getColorUseItemComponent(DyeItem instance, @Share("dyeItemComponent") LocalRef dyeItemComponent) { - return dyeItemComponent.get().color(); + private DyeColor getColorUseItemComponent(DyeItem instance, @Share("dye") LocalRef dye) { + return dye.get().color(); } @Redirect( diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java index 038519e0..ec47c35a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/ShieldDecorationRecipeExtender.java @@ -30,17 +30,27 @@ private boolean isOfForShieldUseRegistryKeyCheck(ItemStack instance, Item item) } @ModifyConstant( - method = { - "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", - "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;" - }, + method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", + constant = @Constant( + classValue = BannerItem.class, + ordinal = 0 + ) + ) + private boolean instanceOfBannerItemUseItemComponentMatches(Object reference, Class clazz, @Local ItemStack inputStack) { + return inputStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) + .map(BannerPatternHolderItemComponent::modifiable) + .orElse(false); + } + + @ModifyConstant( + method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", constant = @Constant( classValue = BannerItem.class, ordinal = 0 ) ) - private boolean instanceOfBannerItemUseItemComponent(Object reference, Class clazz, @Local(ordinal = 2) ItemStack slotStack) { - return slotStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) + private boolean instanceOfBannerItemUseItemComponentCraft(Object reference, Class clazz, @Local(ordinal = 2) ItemStack inputStack) { + return inputStack.itematic$getBehavior(ItemComponentTypes.BANNER_PATTERN_HOLDER) .map(BannerPatternHolderItemComponent::modifiable) .orElse(false); } diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java index 65faf50e..a5e8138b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTransformRecipeExtender.java @@ -5,6 +5,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.SmithingTransformRecipe; import net.minecraft.recipe.display.RecipeDisplay; import net.minecraft.recipe.display.SlotDisplay; @@ -17,9 +18,22 @@ import org.spongepowered.asm.mixin.injection.Redirect; import java.util.List; +import java.util.Optional; @Mixin(SmithingTransformRecipe.class) public class SmithingTransformRecipeExtender implements RecipeAccess { + @Shadow + @Final + Optional template; + + @Shadow + @Final + Optional base; + + @Shadow + @Final + Optional addition; + @Shadow @Final ItemStack result; @@ -39,6 +53,9 @@ private ItemStack copyComponentsToNewStackUseRegistryEntry(ItemStack instance, I public List itematic$displays(RegistryEntryLookup items) { return List.of( new SmithingRecipeDisplay( + Ingredient.toDisplay(this.template), + Ingredient.toDisplay(this.base), + Ingredient.toDisplay(this.addition), new SlotDisplay.StackSlotDisplay(this.result), new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.SMITHING_TABLE)) ) diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java index 70e4ca2a..bd421559 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/SmithingTrimRecipeExtender.java @@ -3,22 +3,44 @@ import net.errorcraft.itematic.access.recipe.RecipeAccess; import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.SmithingTrimRecipe; import net.minecraft.recipe.display.RecipeDisplay; import net.minecraft.recipe.display.SlotDisplay; import net.minecraft.recipe.display.SmithingRecipeDisplay; import net.minecraft.registry.RegistryEntryLookup; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import java.util.List; +import java.util.Optional; @Mixin(SmithingTrimRecipe.class) public class SmithingTrimRecipeExtender implements RecipeAccess { + @Shadow + @Final + Optional template; + + @Shadow + @Final + Optional base; + + @Shadow + @Final + Optional addition; + @Override public List itematic$displays(RegistryEntryLookup items) { + SlotDisplay base = Ingredient.toDisplay(this.base); + SlotDisplay material = Ingredient.toDisplay(this.addition); + SlotDisplay pattern = Ingredient.toDisplay(this.template); return List.of( new SmithingRecipeDisplay( - SlotDisplay.SmithingTrimSlotDisplay.INSTANCE, + pattern, + base, + material, + new SlotDisplay.SmithingTrimSlotDisplay(base, material, pattern), new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.SMITHING_TABLE)) ) ); diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java index 4ef71fc6..c45ce5d8 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/StonecuttingRecipeExtender.java @@ -3,6 +3,9 @@ import net.errorcraft.itematic.access.recipe.RecipeAccess; import net.errorcraft.itematic.item.ItemKeys; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.SingleStackRecipe; import net.minecraft.recipe.StonecuttingRecipe; import net.minecraft.recipe.display.RecipeDisplay; import net.minecraft.recipe.display.SlotDisplay; @@ -14,7 +17,11 @@ import java.util.List; @Mixin(StonecuttingRecipe.class) -public abstract class StonecuttingRecipeExtender implements RecipeAccess { +public abstract class StonecuttingRecipeExtender extends SingleStackRecipe implements RecipeAccess { + public StonecuttingRecipeExtender(String group, Ingredient ingredient, ItemStack result) { + super(group, ingredient, result); + } + @Shadow public abstract SlotDisplay createResultDisplay(); @@ -22,6 +29,7 @@ public abstract class StonecuttingRecipeExtender implements RecipeAccess { public List itematic$displays(RegistryEntryLookup items) { return List.of( new StonecutterRecipeDisplay( + this.ingredient().toDisplay(), this.createResultDisplay(), new SlotDisplay.ItemSlotDisplay(items.getOrThrow(ItemKeys.STONECUTTER)) ) diff --git a/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java b/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java index 77454772..fb19fae9 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/recipe/display/SlotDisplayExtender.java @@ -1,22 +1,27 @@ package net.errorcraft.itematic.mixin.recipe.display; -import net.errorcraft.itematic.item.ItemKeys; +import com.llamalad7.mixinextras.sugar.Local; +import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; import net.errorcraft.itematic.item.component.ItemComponentTypes; import net.minecraft.item.FuelRegistry; import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; +import net.minecraft.recipe.display.DisplayedItemFactory; import net.minecraft.recipe.display.SlotDisplay; +import net.minecraft.recipe.display.SlotDisplayContexts; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.resource.featuretoggle.FeatureSet; +import net.minecraft.util.context.ContextParameterMap; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Collections; import java.util.SequencedSet; +import java.util.function.Function; +import java.util.stream.Collectors; public interface SlotDisplayExtender { @Mixin(SlotDisplay.StackSlotDisplay.class) @@ -47,47 +52,36 @@ private boolean dataDrivenItemsAreAlwaysEnabled(Item instance, FeatureSet featur } } - @Mixin(SlotDisplay.SmithingTrimSlotDisplay.class) - class SmithingTrimSlotDisplayExtender { + @Mixin(SlotDisplay.AnyFuelSlotDisplay.class) + class AnyFuelSlotDisplayExtender { @Redirect( method = "appendStacks", at = @At( - value = "NEW", - target = "(Lnet/minecraft/item/ItemConvertible;)Lnet/minecraft/item/ItemStack;" + value = "INVOKE", + target = "Lnet/minecraft/item/FuelRegistry;getFuelItems()Ljava/util/SequencedSet;" ) ) - private ItemStack newItemStackForIronChestplateUseRegistryEntry(ItemConvertible item, SlotDisplay.Context context) { - return context.registries() - .getOrThrow(RegistryKeys.ITEM) - .getOptional(ItemKeys.IRON_CHESTPLATE) - .map(ItemStack::new) - .orElse(ItemStack.EMPTY); - } - } + private SequencedSet> useDataDrivenFuel(FuelRegistry instance, ContextParameterMap parameters) { + RegistryWrapper.WrapperLookup lookup = parameters.getNullable(SlotDisplayContexts.REGISTRIES); + if (lookup == null) { + return Collections.emptyNavigableSet(); + } - @Mixin(SlotDisplay.AnyFuelSlotDisplay.class) - class AnyFuelSlotDisplayExtender { - @Inject( - method = "appendStacks", - at = @At("HEAD") - ) - private void addDataDrivenFuel(SlotDisplay.Context context, SlotDisplay.StackConsumer consumer, CallbackInfo info) { - context.registries() - .getOrThrow(RegistryKeys.ITEM) + return lookup.getOrThrow(RegistryKeys.ITEM) .streamEntries() .filter(reference -> reference.value().itematic$hasBehavior(ItemComponentTypes.FUEL)) - .forEach(consumer::append); + .collect(Collectors.toCollection(ObjectLinkedOpenHashSet::new)); } - @Redirect( + @ModifyArg( method = "appendStacks", at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/FuelRegistry;getFuelItems()Ljava/util/SequencedSet;" + target = "Ljava/util/stream/Stream;map(Ljava/util/function/Function;)Ljava/util/stream/Stream;" ) ) - private SequencedSet doNotAddExistingFuelItems(FuelRegistry instance) { - return Collections.emptyNavigableSet(); + private Function, ? extends T> useRegistryEntry(Function mapper, @Local DisplayedItemFactory.FromStack fromStack) { + return fromStack::toDisplayed; } } } diff --git a/src/main/java/net/errorcraft/itematic/util/context/ItematicContextParameters.java b/src/main/java/net/errorcraft/itematic/util/context/ItematicContextParameters.java new file mode 100644 index 00000000..18cae769 --- /dev/null +++ b/src/main/java/net/errorcraft/itematic/util/context/ItematicContextParameters.java @@ -0,0 +1,12 @@ +package net.errorcraft.itematic.util.context; + +import net.minecraft.util.context.ContextParameter; +import net.minecraft.util.math.Direction; + +public class ItematicContextParameters { + public static final ContextParameter SIDE = ContextParameter.of("side"); + + private ItematicContextParameters() {} + + public static void init() {} +} diff --git a/src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextTypes.java b/src/main/java/net/errorcraft/itematic/util/context/ItematicContextTypes.java similarity index 50% rename from src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextTypes.java rename to src/main/java/net/errorcraft/itematic/util/context/ItematicContextTypes.java index 220050fa..95728fba 100644 --- a/src/main/java/net/errorcraft/itematic/loot/context/ItematicLootContextTypes.java +++ b/src/main/java/net/errorcraft/itematic/util/context/ItematicContextTypes.java @@ -1,22 +1,22 @@ -package net.errorcraft.itematic.loot.context; +package net.errorcraft.itematic.util.context; import net.errorcraft.itematic.mixin.loot.context.LootContextTypesAccessor; import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.loot.context.LootContextType; +import net.minecraft.util.context.ContextType; -public class ItematicLootContextTypes { - public static final LootContextType ACTION = LootContextTypesAccessor.register("action", builder -> +public class ItematicContextTypes { + public static final ContextType ACTION = LootContextTypesAccessor.register("action", builder -> builder.allow(LootContextParameters.THIS_ENTITY) .require(LootContextParameters.ORIGIN) .allow(LootContextParameters.TOOL) - .allow(ItematicLootContextParameters.SIDE) + .allow(ItematicContextParameters.SIDE) ); - public static final LootContextType TRADE = LootContextTypesAccessor.register("trade", builder -> + public static final ContextType TRADE = LootContextTypesAccessor.register("trade", builder -> builder.require(LootContextParameters.THIS_ENTITY) .require(LootContextParameters.ORIGIN) ); - private ItematicLootContextTypes() {} + private ItematicContextTypes() {} public static void init() {} } diff --git a/src/main/java/net/errorcraft/itematic/world/action/context/ActionContext.java b/src/main/java/net/errorcraft/itematic/world/action/context/ActionContext.java index 4f38663d..94067e86 100644 --- a/src/main/java/net/errorcraft/itematic/world/action/context/ActionContext.java +++ b/src/main/java/net/errorcraft/itematic/world/action/context/ActionContext.java @@ -1,9 +1,9 @@ package net.errorcraft.itematic.world.action.context; import net.errorcraft.itematic.item.ItemStackConsumer; -import net.errorcraft.itematic.loot.context.ItematicLootContextParameters; -import net.errorcraft.itematic.loot.context.ItematicLootContextTypes; import net.errorcraft.itematic.util.PositionUtil; +import net.errorcraft.itematic.util.context.ItematicContextParameters; +import net.errorcraft.itematic.util.context.ItematicContextTypes; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameter; import net.errorcraft.itematic.world.action.context.parameter.ActionContextParameters; import net.minecraft.block.Block; @@ -16,8 +16,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.loot.context.LootContext; -import net.minecraft.loot.context.LootContextParameterSet; import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.loot.context.LootWorldContext; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.function.CommandFunctionManager; @@ -93,12 +93,12 @@ public Builder builderForCopy() { } public LootContext createLootContext(ActionContextParameters parameters) { - LootContextParameterSet set = new LootContextParameterSet.Builder(this.world) + LootWorldContext set = new LootWorldContext.Builder(this.world) .add(LootContextParameters.THIS_ENTITY, this.entities.get(parameters.entity())) .add(LootContextParameters.ORIGIN, this.position(parameters.position())) .add(LootContextParameters.TOOL, this.stack) - .add(ItematicLootContextParameters.SIDE, this.side) - .build(ItematicLootContextTypes.ACTION); + .add(ItematicContextParameters.SIDE, this.side) + .build(ItematicContextTypes.ACTION); return new LootContext.Builder(set).build(Optional.empty()); } diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index cef2a3c8..c84eaaf6 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -286,7 +286,6 @@ "loot.ContainerComponentModifierExtender", "loot.ContainerComponentModifiersExtender$BundleContentsExtender", "loot.condition.LootConditionTypesAccessor", - "loot.context.LootContextParametersAccessor", "loot.context.LootContextTypesAccessor", "loot.entry.ItemEntryExtender", "loot.entry.TagEntryExtender", @@ -339,7 +338,6 @@ "recipe.TransmuteRecipeExtender", "recipe.display.SlotDisplayExtender$AnyFuelSlotDisplayExtender", "recipe.display.SlotDisplayExtender$ItemSlotDisplayExtender", - "recipe.display.SlotDisplayExtender$SmithingTrimSlotDisplayExtender", "recipe.display.SlotDisplayExtender$StackSlotDisplayExtender", "registry.BuiltinRegistriesExtender", "registry.RegistriesAccessor", From 2e7a185c7b3ad50f6950ee83b3461729a09a15d3 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Sun, 8 Feb 2026 21:41:15 +0100 Subject: [PATCH 10/11] Port to 1.21.3 --- gradle.properties | 6 ++--- .../itematic/mixin/item/ItemExtender.java | 27 +++++++++++++++++++ .../mixin/item/ItemStackExtender.java | 14 ---------- .../mixin/loot/entry/ItemEntryExtender.java | 26 ------------------ .../mixin/loot/entry/TagEntryExtender.java | 5 +++- src/main/resources/itematic.mixins.json | 1 - 6 files changed, 34 insertions(+), 45 deletions(-) delete mode 100644 src/main/java/net/errorcraft/itematic/mixin/loot/entry/ItemEntryExtender.java diff --git a/gradle.properties b/gradle.properties index ec830058..d09ee0f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.21.2-pre1 - yarn_mappings=1.21.2-pre1+build.3 + minecraft_version=1.21.3 + yarn_mappings=1.21.3+build.2 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ org.gradle.jvmargs=-Xmx1G archives_base_name = itematic # Dependencies - fabric_version=0.105.3+1.21.2 + fabric_version=0.114.1+1.21.3 diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java index d800193b..1725b30a 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemExtender.java @@ -1,11 +1,13 @@ package net.errorcraft.itematic.mixin.item; import com.google.common.annotations.VisibleForTesting; +import com.mojang.serialization.Codec; import net.errorcraft.itematic.access.item.ItemAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.component.type.UseDurationDataComponent; import net.errorcraft.itematic.inventory.StackReferenceUtil; import net.errorcraft.itematic.item.ItemDisplay; +import net.errorcraft.itematic.item.ItemKeys; import net.errorcraft.itematic.item.ItemResult; import net.errorcraft.itematic.item.ItemUtil; import net.errorcraft.itematic.item.component.ItemComponent; @@ -42,7 +44,10 @@ import net.minecraft.item.consume.UseAction; import net.minecraft.item.tooltip.TooltipData; import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.registry.DefaultedRegistry; +import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.screen.slot.Slot; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; @@ -78,6 +83,28 @@ public abstract class ItemExtender implements ItemAccess, FabricItem { @Unique private ItemEventMap events; + @Redirect( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/registry/DefaultedRegistry;getEntryCodec()Lcom/mojang/serialization/Codec;" + ) + ) + private static Codec> getEntryCodecDoNotUseStaticItemRegistry(DefaultedRegistry instance) { + return RegistryFixedCodec.of(RegistryKeys.ITEM); + } + + @Redirect( + method = "method_65043", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/registry/entry/RegistryEntry;matches(Lnet/minecraft/registry/entry/RegistryEntry;)Z" + ) + ) + private static boolean matchesForAirUseRegistryKey(RegistryEntry instance, RegistryEntry entry) { + return instance.matchesKey(ItemKeys.AIR); + } + @Redirect( method = "", at = @At( diff --git a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java index 31552d17..c803b2d4 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/item/ItemStackExtender.java @@ -5,7 +5,6 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.mojang.serialization.Codec; import net.errorcraft.itematic.access.item.ItemStackAccess; import net.errorcraft.itematic.component.ItematicDataComponentTypes; import net.errorcraft.itematic.item.ItemKeys; @@ -39,10 +38,8 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.DefaultedRegistry; import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryEntryList; -import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.registry.tag.TagKey; import net.minecraft.screen.slot.Slot; import net.minecraft.server.network.ServerPlayerEntity; @@ -122,17 +119,6 @@ public abstract class ItemStackExtender implements ComponentHolder, ItemStackAcc @Unique private ActionContext context; - @Redirect( - method = "", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/registry/DefaultedRegistry;getEntryCodec()Lcom/mojang/serialization/Codec;" - ) - ) - private static Codec> registryEntryCodecDoNotUseStaticItemRegistry(DefaultedRegistry instance) { - return RegistryFixedCodec.of(RegistryKeys.ITEM); - } - @Inject( method = "(Lnet/minecraft/registry/entry/RegistryEntry;)V", at = @At("TAIL") diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/entry/ItemEntryExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/entry/ItemEntryExtender.java deleted file mode 100644 index b101893b..00000000 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/entry/ItemEntryExtender.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.errorcraft.itematic.mixin.loot.entry; - -import com.mojang.serialization.Codec; -import net.minecraft.item.Item; -import net.minecraft.loot.entry.ItemEntry; -import net.minecraft.registry.DefaultedRegistry; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryFixedCodec; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(ItemEntry.class) -public class ItemEntryExtender { - @Redirect( - method = "method_53286", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/registry/DefaultedRegistry;getEntryCodec()Lcom/mojang/serialization/Codec;" - ) - ) - private static Codec> doNotUseStaticItemRegistry(DefaultedRegistry instance) { - return RegistryFixedCodec.of(RegistryKeys.ITEM); - } -} diff --git a/src/main/java/net/errorcraft/itematic/mixin/loot/entry/TagEntryExtender.java b/src/main/java/net/errorcraft/itematic/mixin/loot/entry/TagEntryExtender.java index 4c3d173e..9da2c9c9 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/loot/entry/TagEntryExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/loot/entry/TagEntryExtender.java @@ -14,7 +14,10 @@ @Mixin(TagEntry.class) public class TagEntryExtender { @Redirect( - method = { "generateLoot", "grow" }, + method = { + "generateLoot", + "grow" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/registry/DefaultedRegistry;iterateEntries(Lnet/minecraft/registry/tag/TagKey;)Ljava/lang/Iterable;" diff --git a/src/main/resources/itematic.mixins.json b/src/main/resources/itematic.mixins.json index c84eaaf6..a64c0006 100644 --- a/src/main/resources/itematic.mixins.json +++ b/src/main/resources/itematic.mixins.json @@ -287,7 +287,6 @@ "loot.ContainerComponentModifiersExtender$BundleContentsExtender", "loot.condition.LootConditionTypesAccessor", "loot.context.LootContextTypesAccessor", - "loot.entry.ItemEntryExtender", "loot.entry.TagEntryExtender", "loot.function.EnchantRandomlyLootFunctionExtender", "loot.function.ExplorationMapLootFunctionExtender", From 73c8c889937a8e35180a0d0b2643cbdd824f8642 Mon Sep 17 00:00:00 2001 From: ErrorCraft Date: Fri, 13 Feb 2026 17:03:57 +0100 Subject: [PATCH 11/11] Increment version to 0.5.0-preview.1+1.21.3 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d09ee0f5..5ad5c099 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.18.4 # Mod Properties - mod_version = 0.4.1+1.21.1 + mod_version = 0.5.0-preview.1+1.21.3 maven_group = net.errorcraft archives_base_name = itematic